Ich muss aus mehr als einer Tabelle auswählen, die viele Felder hat. Muss ich manuell die Abfrage wie folgt herzustellen:Mehrere Tabellen ohne AS (Alias) auswählen?
table1.field1 AS table1_field1, table1.field2 AS table1_field2, ..., table2.field1 AS table2_field1, ...
Oder gibt es eine Abhilfe für dieses in MySQL oder PHP, die automatisch kümmert sich um alle diese stattfinden wird, wenn identische Feldnamen in den Tabellen sind?
In PHP, habe ich versucht:
$results = $conn -> query("SELECT table1.*, table2.* FROM table1, table2 WHERE 1"); // $conn is a mysqli object
$results = $results -> fetch_array();
Aber wenn es ein Feld in beiden der zwei Tabellen mit dem Namen ‚title‘, $ results [ ‚title‘] enthalten würde nur den Wert des Datensatzes aus die 2. Tabelle.
Ich weiß, es gibt numerischen Indizes, die Sie den Wert verwenden können, um Zugriff aber:
- Es ist nicht lesbar.
- Sie müssen den Code jedes Mal aktualisieren, wenn sich die Tabellenstruktur ändert, z. B. die Reihenfolge der Felder.
Irgendeine Idee?
MySQL funktioniert ordnungsgemäß, indem alle Werte aller Felder zurückgegeben werden, auch wenn identische Feldnamen vorhanden sind. PHP scheint jedoch alles zu überschreiben, das den gleichen Feldnamen (Array-Index) hat, da $ results -> fetch_array() immer ein Array zurückgibt THUS-Werte werden vom selben Index (Feldname) überschrieben. Gibt es eine Möglichkeit, dies in PHP zu umgehen? –
@ kavoir.com: Ja, SQL unterstützt Spalten aus verschiedenen Tabellen mit identischen Namen *, solange ein Tabellenname oder eine Aliasreferenz an sie angehängt ist * - andernfalls erhalten Sie eine Fehlermeldung "mehrdeutige Spaltenreferenz". Ich bin nicht stark in PHP, aber es hängt davon ab, was SQL/MySQL unterstützt. –