[英]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.