如何从具有JOINed表的查询中获取所有字段值?

时间:2009-09-29 13:08:44

标签: php pear mdb2

我有这个基本查询:

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

我正在使用MDB2中的 PEAR 来执行它并读取返回值。

但不知何故,结果数组总是包含来自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表似乎是首选,无论如何。当与其他表连接时,我仍然只能从该表中获取字段。

3 个答案:

答案 0 :(得分:1)

好的,我找到了原因:

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

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

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

答案 1 :(得分: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

答案 2 :(得分:0)

您确定错误地使用fetchOne()而不是fetchRow()吗?

你可以发布你的PHP代码吗?

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

SELECT a b

相同
SELECT a AS b