2009-02-19 42 views
0

我是SQL和關係數據庫管理系統的新手。 我想從關係數據庫檢索記錄,如果他們滿足3個給定的屬性。如何:MySQL如何根據三個屬性檢索記錄?

例如,如果存在包含約固體信息的表:

table_solid : |s_id|s_name|description| 
table_width : |w_id|w_name| 
table_height: |h_id|h_name| 
table_length: |l_id|l_name| 

其中* _id是所有的主鍵。

我還有3個表格用於將這些表格與外鍵相關聯。

table_s_h: |s_id|h_id| 
table_s_w: |s_id|w_id| 
table_s_l: |s_id|l_id| 

請您解釋我該如何加入這些。

在此先感謝。

    --------- table_length 
table_SOLID ---- 
       ----------- table_width 

       ------------table_height 

table_length包含solid可以採用的有效長度(以及類似的其他表)。

+0

這些表格描述了什麼?他們的結構和他們的領域的名稱不是很清楚。 – 2009-02-19 12:49:40

+0

我認爲你最好使用5列或6列的表格。 5列將是's_name','description','w_name','l_name'和'h_name';第六個可能是該對象的ID。你似乎已經過度規範化,並因此遇到了問題。 – 2009-03-02 07:48:10

回答

2

從單個表:

Select * 
FROM TABLE_NAME 
WHERE table_width = SOME_VALUE3 
AND table_height= SOME_VALUE2 
AND table_length = SOME_VALUE3 

是你在找什麼?或者你想查詢多個表?如果是的話試試這個:

Select * 
FROM TABLE_SOLID solid 
Inner join table_width width on solid.w_id = width.w_id 
inner join table_height height on solid.h_id = height.h_id 
inner join table_length length on solid.l_id = length.l_id 

此鏈接可能是使用你http://dev.mysql.com/doc/refman/5.0/en/join.html

0

你的DB模式不清晰。

這四個不同的表?如果是的話,他們是如何聯繫起來的,即如何檢索給定固體的寬度,高度和長度?

或者是由s_id標識的1個表中的那4列?

請說明。

0

我希望我能理解你的模式。

SELECT 
    s.* 
FROM 
    table_solid AS s 
WHERE 
    s.s_id IN 
(
(SELECT s_id FROM table_s_h INNER JOIN table_height USING (h_id) WHERE h_name = H) 
INTERSECT 
(SELECT s_id FROM table_s_w INNER JOIN table_width USING (w_id) WHERE w_name = W) 
INTERSECT 
(SELECT s_id FROM table_s_l INNER JOIN table_length USING (l_id) WHERE l_name = L) 
); 

OT:我不知道這是否會在MySQL的工作,我不在乎 - 我已經添加了「MySQL的」標籤的問題,你已經刪除它。

相關問題