簡體   English   中英

SQL查詢返回多行

[英]SQL query returning multiple rows

我有三個數據庫表:

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)

我嘗試了各種左聯接,存在-但沒有成功。

一個明確的例子將是很棒的(加上一些阿司匹林)。

謝謝

萬里。

沒有理由聯接到未以任何方式使用其數據的表。 只需SELECT total_physical_memory FROM system_profile執行SELECT total_physical_memory FROM system_profile

我認為如果您要從單個表中獲取數據,則不需要聯接。

如果要基於其他表應用某些條件,請嘗試以下查詢:$ query =“ SELECT DISTINCT system_profile.total_physical_memory FROM system_profile JOIN hw_profile ON(system_profile.id = hw_profile.id)JOIN設備ON(device.device_id = hw_profile。設備ID)”;

如果您的應用程序需要,也可以使用LEFT JOIN而不是JOIN。

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM