-3

私は2つのテーブルを持っています。

表1

category_id   name   parent_id
1             test    0
2             test1   1 
3             test2   1  
4             test3   1
5             test4   2
.

TABLE_2

pro_id   category_id   name
1        2            prod1
2        2            prod2
3        3            prod3
4        5            prod4
.
. 
.

私はこれをする必要があります

  1. すべてcategory_idのsを取得しますparent_id = given...(たとえば「1」)
  2. where in (all the ids returned from 1) )... 使用した別のテーブルでのクエリは、例の場合になります。where in ('2,3,4')

出力

pro_id表2の(この場合は1,2,3)のすべてのフィールド。

これを試しました..(これがうまくいくことを願っています:))

select * from TABLE_2 
where category_id in (select category_id from TABLE_1 where parent_id = 1) 

しかし、結果はありません。

これらすべてをPHPスクリプトで行うことができたはずです。しかし、ページ付けに問題がありました。だから私はそれを1つのクエリで機能させたいと思っています。

それで、これを行うことは可能ですか?クエリから結果を取得し、それを1つのクエリで他のクエリで使用しますか?もしそうなら、私はあなたの助けをいただければ幸いです。

4

4 に答える 4

3

INは、通常、「OR」(WHERE x = Y OR x = Z OR ...)で区切られた一連のWHERE句として評価されるため、非常に遅い演算子です。

だからこれを試してみてください

SELECT t2.*
FROM TABLE_1 t1
LEFT JOIN TABLE_2 t2 ON t2.category_id = t1.category_id
WHERE t1.parent_id = 1
于 2012-11-09T10:34:47.747 に答える
2

これは奇妙です..しかし、私が提供したクエリは機能していました.... :) :)

select * from TABLE_2 where category_id in (select category_id from TABLE_1 where parent_id = 1) 

とにかくありがとうみんな...

于 2012-11-09T10:50:13.570 に答える
1

WHERE句にフィールドを指定する必要があります。

select * from TABLE_2 where category_id in (...)
于 2012-11-09T10:33:57.653 に答える
1
SELECT t2.*
FROM TABLE_1 t1
JOIN TABLE_2 t2 ON 
t2.category_id = t1.category_id
WHERE t1.parent_id = 1

ただし、上記で記述したクエリは機能するはずです。

于 2012-11-09T10:45:38.597 に答える