MySQL Left Join帮助

时间:2011-09-02 12:26:32

标签: mysql join

再次欢迎社区,

我在一个多小时前发布了一个问题,要求帮助修复一个SQL查询,这个问题得到了及时的回答并且是一个很好的帮助。遗憾的是,经过反思和进一步的使用,结果是查询返回了目标表中的所有行。我通过将mysql_fetch_object置于while循环中来验证这一点。

所以我现在迫切需要的是有人看看SQL查询并告诉我出了什么问题以及如果可能的话如何修复它。当使用$ _SESSION ['model']作为参考时,我只需要找到一行(正确的行)。

以下是我之前提问的全部内容。

提前谢谢。

=============================================== =============================

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  | 000004      | 1          | 4      | 4      | 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']."'
");

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

3 个答案:

答案 0 :(得分:1)

SELECT web_quote_component_cpu.name FROM web_quote_component_cpu JOIN web_quote_models ON web_quote_component_cpu.id = web_quote_models.cpu_id WHERE web_quote_models.model = $ _SESSION ['model]

(或类似的东西)

答案 1 :(得分:1)

使用Left Join,您可以从join左侧的表格(即web_quote_component_cpu)中获取条目,即使它们与其他表格不匹配也是如此。如果您希望条目仅匹配,请使用join代替left join

这就是你问的问题吗?

答案 2 :(得分:0)

试试这个:

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
   WHERE web_quote_models.name='".$_SESSION['model']."' LIMIT 1