2012-10-04 40 views
0

向大家問好。MySQL的選擇使用在其中()

我有兩個表,例如;

表名X

________________ 
| id | A | 
|____|_________| 
| 1 | 1,2,4,8 | 
|____|_________| 

此查詢在另一個數據表Y工作,

mysql_query(" Select * from Y where id IN(1,2,4,8) ") 

但是這不工作,

mysql_query(" Select * from Y where id IN(Select A from X where id=1) ") 

我能做些什麼? 謝謝。

回答

1

更好的表設計將是:

table X: 
-------- 
id int 
someid int 

值在表將是:然後

id someid 
-- -------- 
1 1 
2 1 
4 1 
8 1 

您的查詢可能是mysql_query(" Select * from Y where id IN(Select id from X where someid=1")

要回答你的問題 - 你似乎是從PHP或類似的東西查詢。使用你的表結構,你可以檢索使用mysql_query("Select A from X where id=1")表X的值,並將結果保存在變量中。然後,您可以執行第二個查詢,即mysql_query(" Select * from Y where id IN(" + yourVar + ") ")

+0

感謝您的回答。 –

0

這是一個「有許多」的關係,所以你應該有一箇中間連接表。這種結構的好處在於插入和刪除。在你的結構中添加或從A中刪除,你會讓你拉記錄,改變值並寫回(或者寫一個程序)。

X  
_________ 
| id | 
|_______| 
| 1 | 
|_______|    

    Y 
_________ 
| id | 
|_______| 
| 1 | 
|_______| 
| 2 | 
|_______| 
| 3 | 
|_______| 

    X_Y 
____________________________ 
| id | x_id | y_id | 
|_______|________|_________| 
| 1 | 1 | 1 | 
|_______|________|_________| 
| 2 | 1 | 2 | 
|_______|________|_________| 
| 3 | 1 | 3 | 
|_______|________|_________| 


SELECT * FROM Y INNER JOIN X_Y ON Y.id=X_Y.y_id WHERE X_Y.x_id=1 

or 

SELECT * FROM Y WHERE id IN (SELECT y_id FROM X_Y WHERE x_id=1) 
+0

謝謝你的回答。 –

+0

不客氣。如果其中一個答案回答了您的問題,您應該將其標記爲正確。 – Kareem