0

皆さんこんにちは。

たとえば、2 つのテーブルがあります。

テーブル名 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) ")

私に何ができる?ありがとうございました。

4

2 に答える 2

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 などからクエリを実行しているようです。あなたが持っているテーブル構造を使用して、テーブル X から値を取得しmysql_query("Select A from X where id=1")、結果を変数に格納できます。次に、2 番目のクエリを実行できますmysql_query(" Select * from Y where id IN(" + yourVar + ") ")

于 2012-10-04T23:12:55.620 に答える
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)
于 2012-10-04T23:22:11.053 に答える