MySQL左连接(我认为)帮助

时间:2011-09-02 10:23:58

标签: mysql join

我无法确定如何在表中返回正确的行,因为该表是关系型的。这两个表格如下所示。

web_quote_models表

id | model       | product_id | cpu_id | ram_id | hdd_id | os_id | opt_id 
=========================================================================
1  | 000001      | 1          | 1      | 1      | 1      | 1     | 1
2  | 000002      | 1          | 2      | 2      | 2      | 2     | 2
3  | 000003      | 1          | 3      | 3      | 3      | 3     | 3
4  | Custom      | 0          | 0      | 3      | 4      | 4     | 4

web_quote_component_cpu表

id | name
=========================================================================
1  | Intel® Core™ i3 2100 3.1GHz dual-core
2  | Intel® Core™ i5 2500 2.7GHz quad-core        
3  | Intel® Core%trade; i7 2600 3.4GHz 8mb Cache dual-core

所以我需要实现的是一个查询,它将查看web_quote_models表并将模型字段与$ _SESSION ['model']匹配,然后将web_quote_models.cpu_id字段与web_quote_component.id匹配。

这是我到目前为止所拥有的;我觉得我离得太远了。

("
 SELECT web_quote_component_cpu.name
 FROM web_quote_component_cpu
 LEFT JOIN web_quote_models
 ON web_quote_component_cpu.id='web_quote_models.cpu_id'
 AND web_quote_models.name='".$_SESSION['model']."'
");

非常感谢任何有帮助的人。

1 个答案:

答案 0 :(得分:1)

我认为你根本不是很远。我相信您需要做的只是停止引用web_quote_models.cpu_id

 SELECT web_quote_component_cpu.name
 FROM web_quote_component_cpu
 LEFT JOIN web_quote_models
 -- note lack of quotes in the following line:
 ON web_quote_component_cpu.id=web_quote_models.cpu_id
 AND web_quote_models.name='".$_SESSION['model']."'

修改

根据评论,我个人会重新编写查询:

 SELECT web_quote_component_cpu.name
 FROM web_quote_component_cpu WHERE ID IN
 ( SELECT ID FROM WEB_QUOTE_MODELS WHERE 
   web_quote_models.name='".$_SESSION['model']."' );

虽然我怀疑用AND替换最后WHERE就足够了:

 SELECT web_quote_component_cpu.name
 FROM web_quote_component_cpu
 LEFT JOIN web_quote_models
 -- note lack of quotes in the following line:
 ON web_quote_component_cpu.id=web_quote_models.cpu_id
 WHERE web_quote_models.name='".$_SESSION['model']."'