Wie kann ich alle Feldwerte aus einer Abfrage mit verknüpften Tabellen bekommen?

StackOverflow https://stackoverflow.com/questions/1492418

  •  18-09-2019
  •  | 
  •  

Frage

Ich habe diese elementare Abfrage:

SELECT d.description, o.code FROM order_positions AS o
LEFT JOIN article_descriptions AS d ON (o.article_id = d.article_id)
WHERE o.order_id = 1

und ich bin mit MDB2 aus PEAR es auszuführen und die Rückgabewerte lesen.

Aber irgendwie das Ergebnis Array enthält immer Felder aus der order_positions Tabelle nur !, das heißt das Ergebnis-Array wie folgt aussieht

row[code] = 'abc123'

, während ich mag es so aussehen

row[description] = 'my description'
row[code] = 'abc123'

Ich habe bereits versucht, die folgenden:

  • Vary die Reihenfolge der Felder, das heißt code zuerst, dann description.
  • Variieren Sie die Reihenfolge der verknüpften Tabellen.
  • Gebraucht vollständige Tabellennamen anstelle von Alias-Namen.
  • verwendet, um die Stelle (SELECT FROM table1, table2 WHERE table1.id = table2.id)
  • "MySQL Join"
  • Gebraucht Aliase mit und ohne AS.

Einige andere Fakten:

  • Ausführen dieser Abfrage in MySQL Query Browser funktioniert gut, alle Felder zurückgegeben.
  • Die order_positions Tabelle scheint vorzuziehen, egal was passiert. Ich immer noch nur bekommen Felder aus dieser Tabelle, wenn sie mit zusätzlichen Tabellen verknüpft.
War es hilfreich?

Lösung

OK, fand ich die Ursache:

Felder mit NULL Werte werden dem Array hinzugefügt. In meinem Testszenario description war in der Tat null und daher war in der Anordnung nicht zur Verfügung.

Ich werde noch diese (peinlich) Frage halten, nur für den Fall, dass jemand anderes hat dieses Problem in der Zukunft.

Facepalm http://www.scienceblogs.de/ frischer-Wind / picard-facepalm-thumb-512x409.jpg

Andere Tipps

Dies sollte funktionieren:

SELECT d.description, o.code 
FROM order_positions o, article_descriptions d 
WHERE o.order_id = 1 AND d.article_id = o.article_id

Sind Sie sicher, dass Sie nicht mit fetchOne() versehentlich statt fetchRow() ?

Könnten Sie Ihren PHP-Code?

Eine andere Möglichkeit besteht darin, dass in Ihrem Code Sie das Komma verpasst haben:

SELECT a b

ist die gleiche wie

SELECT a AS b
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top