2009-09-29 5 views
0

J'ai cette requête élémentaire:Comment puis-je obtenir toutes les valeurs de champs d'une requête avec des tables jointes?

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 

et j'utilise MDB2 de PEAR pour l'exécuter et lire les valeurs de retour.

Mais en quelque sorte le tableau de résultats contient toujours les champs de la table order_positionsseulement!, À savoir le tableau de résultat ressemble à ceci

row[code] = 'abc123' 

alors que je veux qu'il ressemble à ce

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

J'ai déjà essayé ce qui suit:

  • Variez l'ordre des champs, c'est-à-dire code en premier, puis description.
  • Varie l'ordre des tables jointes.
  • Noms de table complets utilisés à la place des alias.
  • Utilisé la "jointure MySQL" à la place (SELECT FROM table1, table2 WHERE table1.id = table2.id)
  • Alias ​​utilisés avec et sans AS.

Quelques autres faits:

  • cette requête dans Exécuter MySQL Query Browser fonctionne très bien, tous les champs sont retournés.
  • La table order_positions semble être préférée, quoi qu'il arrive. En rejoignant des tables supplémentaires, je n'ai toujours que des champs de cette table.

Répondre

0

Cela devrait fonctionner:

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

Thanky vous, mais comme je l'ai dit, je l'ai déjà essayé. –

0

Êtes-vous sûr que vous ne l'utilisez fetchOne() par erreur au lieu de fetchRow()?

Pourriez-vous poster votre code PHP?

Une autre possibilité est que votre code vous avez manqué la virgule:

SELECT a b 

est le même que

SELECT a AS b 
+0

Non, j'utilise fetchRow. Une virgule manquante ne se traduirait-elle pas par une erreur de syntaxe? J'ai vérifié aussi avec et sans AS, les deux la même chose. –

Questions connexes