PHP/MySQL: Immer Mehrere Spalten Mit Demselben Namen in der Join-Abfrage, Ohne die Aliase?

Ich habe zwei Tabellen. Eine für Benutzer und eine für Beiträge.
Die users Tabelle hat die folgenden Felder:

id, username, password, created_at, modified_at

Die posts-Tabelle hat die folgenden Felder:

id, user_id, title, body, created_at, modified_at

Wenn ich eine Abfrage wie:

SELECT * FROM `users` LEFT OUTER JOIN `posts` ON users.id=posts.user_id

Und Holen sich die Ergebnisse mit PDO:

$sth = $this->$default_connection->prepare($query);
$sth->execute();
$sth->fetchAll(PDO::FETCH_ASSOC);

Das zurückgegebene array überschreibt alle Spalten mit dem gleichen Namen wie id, created_at, modified_at wie diese:

 Array
(
    [0] => Array
        (
            [id] => 1
            [username] => johnSmith
            [password] => 2348r7edf8s79aa0230
            [created_at] => 0000-00-00 00:00:00
            [modified_at] => 0000-00-00 00:00:00
            [user_id] => 18
            [title] => First Post
            [body] => Just testing...
        )
)

Den id Feld für die Benutzer nicht angezeigt, stattdessen überschrieben id von der post. Das gleiche gilt für die created_at & modified_at Felder.

Ich glaube ich kann dieses problem lösen, indem Sie entweder über alias oder so etwas wie dieses:

    SELECT 
       users.id, 
       users.username, 
       users.password, 
       users.created_at, 
       users.modified_at, 
       posts.id AS postId, 
       posts.user_id, 
       posts.title, 
       posts.created_at AS postCreatedAt, 
       posts.modified_at AS postModifiedAt
   FROM `users`
       LEFT OUTER JOIN `posts` ON (users.id=postId)

Oder etwas ähnliches, aber ich Frage mich, ob es einen Weg gibt, dies zu tun, ohne manuell schreiben den Namen jedes einzelnen Spalte oder ein alias für jedes mal, wenn ich unterscheiden wollen zwischen zwei Spalten mit dem gleichen Namen?
Ist es möglich, etwas zu tun wie:

SELECT users.* AS User and posts.* AS Post from `users` LEFT OUTER JOIN ON (User.id=Post.user_id)

Und haben es automatisch Aliase für jede Spalte?
Oder gibt es irgendeine andere schneller/bequemer Weg, dies zu tun?
Oder kann ich dies tun ohne zu definieren Aliase mich?

Danke

InformationsquelleAutor randomphp | 2013-07-18
Schreibe einen Kommentar