我有三个数据库表:
system_profile
id manufacturer model name total_physical_memory
12345 my_pc 5000 DGS 3219206144
device
id version date_created device_id instance
2828493 0 2013-10-13 20:13:00 12345 q
2828494 1 2013-10-13 xxxxx 12345 e
2828495 2 2013-10-13 aaaaa 12345 r
2828496 3 2013-10-13 ccccc 12345 r
hw_profile
id manufacturer model name disk device_id
12345 my_pc 5000 ABC 2 gb 12345
hw_profile和system_profile表通过主键“id”
链接hw_profile和设备表由device_id链接。
我正在尝试选择“只获得system_profile.total_physical_memory”:
SELECT system_profile.total_physical_memory
FROM system_profile, hw_profile, device
WHERE hw_profile.id = system_profile.id
AND device.device_id = hw_profile.device_id
这个查询无效(我得到了多个结果)。
我需要返回“just”system_profile.total_physical_memory(3219206144)
我尝试了各种左连接,存在 - 但没有成功。
一个明显的例子很棒(加上一些阿司匹林)。
由于
数。
答案 0 :(得分:1)
没有理由加入其数据未以任何方式使用的表。只需做一个SELECT total_physical_memory FROM system_profile
。
答案 1 :(得分:0)
如果您从单个表中获取数据,我认为您不需要加入。
如果您想根据其他表应用某些条件,请尝试以下查询: $ query =“SELECT DISTINCT system_profile.total_physical_memory 来自system_profile 加入hw_profile ON(system_profile.id = hw_profile.id) 加入设备 ON(device.device_id = hw_profile.device_id)“;
如果你的应用需要,你也可以使用LEFT JOIN而不是JOIN。
答案 2 :(得分:0)
试试这个:
SELECT sp.total_physical_memory
FROM system_profile sp
INNER JOIN device d ON d.device_id = sp.id
INNER JOIN hw_profile hp ON hp.device_id = d.device_id;
注意:如果数据与每个表相关,则需要加入表,否则只需选择特定id的total_physical_memory,如:
SELECT total_physical_memory
FROM system_profile where id = <some_id>;