我无法确定如何在表中返回正确的行,因为该表是关系型的。这两个表格如下所示。
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']."'
");
非常感谢任何有帮助的人。
丹
答案 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']."'