0

我有这个基本查询:

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

我正在使用MDB2fromPEAR执行它并读取返回值。

但不知何故,结果数组总是只包含order_positions表中的字段!,即结果数组看起来像这样

row[code] = 'abc123'

虽然我希望它看起来像这样

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

我已经尝试了以下方法:

  • 改变字段的顺序,即code首先,然后description
  • 改变连接表的顺序。
  • 使用完整的表名而不是别名。
  • 改用“MySQL 连接”( SELECT FROM table1, table2 WHERE table1.id = table2.id)
  • 使用有和没有的别名AS

其他一些事实:

  • 在 MySQL 查询浏览器中执行此查询工作正常,返回所有字段。
  • order_positions无论如何,这张桌子似乎是首选。加入其他表时,我仍然只能从该表中获取字段。
4

3 回答 3

1

好的,我找到了原因:

具有值的字段NULL不会添加到数组中。在我的测试场景description中,实际上是 null,因此在数组中不可用。

我仍然会保留这个(令人尴尬的)问题,以防其他人将来遇到这个问题。

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

于 2009-09-29T14:26:36.077 回答
0

这应该有效:

SELECT d.description, o.code 
FROM order_positions o, article_descriptions d 
WHERE o.order_id = 1 AND d.article_id = o.article_id
于 2009-09-29T13:13:03.090 回答
0

你确定你没有fetchOne()错误地使用而不是fetchRow()

你能发布你的PHP代码吗?

另一种可能性是在您的代码中您错过了逗号:

SELECT a b

是相同的

SELECT a AS b
于 2009-09-29T13:13:12.947 回答