SQL查询返回多行

时间:2013-12-02 19:43:08

标签: mysql sql join

我有三个数据库表:

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)

我尝试了各种左连接,存在 - 但没有成功。

一个明显的例子很棒(加上一些阿司匹林)。

由于

数。

3 个答案:

答案 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>;