簡體   English   中英

如何從具有JOINed表的查詢中獲取所有字段值?

[英]How can I get all field values from a query with JOINed tables?

我有這個基本查詢:

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

我正在使用PEAR MDB2來執行它並讀取返回值。

但不知何故,結果數組始終包含從田間地頭order_positions 表!,即結果數組看起來像這樣

row[code] = 'abc123'

雖然我希望它看起來像這樣

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

我已經嘗試了以下方法:

  • 改變字段的順序,即先code ,然后description
  • 改變連接表的順序。
  • 使用完整的表名而不是別名。
  • 改用“ MySQL join”( SELECT FROM table1, table2 WHERE table1.id = table2.id
  • 使用和不使用AS別名。

其他一些事實:

  • 在MySQL Query Browser中執行此查詢工作正常,返回所有字段。
  • order_positions表似乎都是首選。 與其他表連接時,我仍然只能從該表中獲取字段。

好的,我找到了原因:

具有NULL值的字段不會添加到數組中。 在我的測試場景中, description實際上為null,因此在數組中不可用。

我仍然保留這個(令人尷尬的)問題,以防萬一將來有人遇到這個問題。

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

這應該工作:

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

您確定不是誤用fetchOne()而不是fetchRow()嗎?

您可以發布您的PHP代碼嗎?

另一種可能性是在代碼中您錯過了逗號:

SELECT a b

是相同的

SELECT a AS b

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM