2009-06-08 4 views
0

RES1連合の選択としてクエリを選択:()RES1(IN PARAM

SELECTはcat_tree FROM LEVEL1としてct_cid WHERE ct_sid = $ sid_int AND ct_parent = $ cid_int)このクエリの何が問題になっている UNIONは(ct_cidを選択レベル2としてcat_tree WHERE ct_sid = $ sid_int AND ct_parent IN level1)

クエリは、ツリーノードの2レベルまでの子ノードを見つけるはずです。 "SQL構文に誤りがあります。適切な構文は、MySQLサーバのバージョンに対応するマニュアルで「level1」の近くで使用してください。)2番目の選択で1番目の選択結果を使用するにはどうすればよいですか?

答えて

1

...と一致する必要がありますSQL-Selectステートメント。何がしたいことは今

select 1 as LevelID, CT_CID from cat_tree where... 
UNION 
select 2 as levelID, CT_CID from cat_tree where ... 

のようなもので、質問のあなたの他の半分...最初の結果を使用しては...サブ選択SECONDクエリのようなクエリをやり直し...

括弧は、UNION選択ではなくSUB-SELECTでのみ必要であることに注意してください。あなたのデータを知らないと、あなたが得ようとしているものへのより簡単なアプローチがあるかもしれません。

+0

が動作します。 buttom行は$ cid_intのt_parentではなくct_parent = $ cid_intでなければならないことに注意してください – Nir

0

これはSQLの仕組みではありません。 INには、値のリスト(またはリストを作成する副選択)が必要です。

クエリの対象となるテーブルのテーブル構造と、フィールドの意味についての説明を投稿してください。それから多分私たちを助けることができます。

0

これはテストされていないですが、あなたは後にしている構造は次のようになります。また、フィールド名と順序は、両方で使用すると、2番目のSELECT文の周りに括弧を必要としない

SELECT ct_cid as level2 FROM cat_tree WHERE ct_sid=$sid_int AND ct_parent IN 
(
    SELECT ct_cid as level1 FROM cat_tree WHERE ct_sid=$sid_int AND ct_parent =$cid_int) 
) 
+0

最初の選択と2番目の選択から値を返すために必要なので動作しません。 – Nir