再次欢迎社区,
我在一个多小时前发布了一个问题,要求帮助修复一个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']."'
");
非常感谢任何有帮助的人。
丹
答案 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