2012-02-13 110 views
1

我对这2个问题很生气,我无法解释自己为什么会返回81行和其他0.有人可以帮助我吗?两个非常相似的查询返回不同的结果,为什么?

-- Working 
SELECT * FROM 
boat_standard_specification_items AS BoatStandardSpecificationItem JOIN standard_specification_items AS StandardSpecificationItem 
ON(BoatStandardSpecificationItem.standard_specification_item_id = StandardSpecificationItem .id) 

-- Not working 
SELECT * FROM 
`boat_standard_specification_items` AS `BoatStandardSpecificationItem` JOIN `standard_specification_items` AS `StandardSpecificationItem` 
ON (`BoatStandardSpecificationItem`.`standard_specification_item_id` = 'StandardSpecificationItem.id') 

我在Windows操作系统上,如果可以以任何方式

+0

结果是什么? – 2012-02-13 05:12:26

+0

我不认为结果是在这里的问题,问题是我得到了<81 rows>结果和<0 rows>结果,这意味着查询不起作用 – 2012-02-13 05:27:56

+0

你有我的答案如下:-) – 2012-02-13 05:35:26

回答

3

有帮助他们不是相同的查询。在第二个,你有:

ON (`BoatStandardSpecificationItem`.`standard_specification_item_id` = 'StandardSpecificationItem.id') 
                     ^--- 

请注意引号的变化。单引号在查询中定义了一个STRING,所以你不会比较两个字段,而是将一个字段与一个字符串进行比较。

+0

哦,男人.. 。我需要一个语法高亮显示,我发现错误的确切时刻我读了我自己的问题在stackoverflow ...(以及它是通过PHP框架写的,所以我可以有点原谅) – 2012-02-13 05:25:53

+0

颜色确实让事情变得如此简单.. 。 – 2012-02-13 05:29:07

0

它看起来像是“不工作”正在使用文字字符串来加入(注意单引号)。其余的查询正在使用back-ticks,所以试试一次。

1

你不能把表名放在单引号内。如果你想在他们周围放置一些东西以使其可读,请使用[和]。

0

他们是不同的查询。第二,你试图匹配字段到你可能不想要的字符串。

(`BoatStandardSpecificationItem`.`standard_specification_item_id` = 'StandardSpecificationItem.id') 

您可以了解更多关于Join

1

在第二个查询

`BoatStandardSpecificationItem`.`standard_specification_item_id` = 'StandardSpecificationItem.id' 

您比较BoatStandardSpecificationItem。​​用绳子'StandardSpecificationItem.id'

在第一个查询

SELECT * FROM 
boat_standard_specification_items AS BoatStandardSpecificationItem JOIN standard_specification_items AS StandardSpecificationItem 
ON(BoatStandardSpecificationItem.standard_specification_item_id = StandardSpecificationItem .id) 

您比较BoatStandardSpecificationItem。​​与另一列StandardSpecificationItem .id

这是很明显的,他们返回不同的结果

相关问题