1

クエリ:

SELECT * FROM #__content WHERE featured=1 and catid=$category_id or catid IN 
( SELECT id FROM #__categories WHERE parent_id=$category_id )

Featured=1ここでのみ動作しますcatid=$category_id。これを開始する場所はcatid IN ( SELECT id FROM #__categories WHERE parent_id=$category_id )すべての行を出力し、featured=1はこの場所では無視されます。featured=1条件を追加する方法はcatid IN

つまり、基本的には次のようになります。

$query = "SELECT * FROM #__content WHERE featured=1 and catid=$category_id";
$query2 = "SELECT * FROM #__content WHERE catid IN 
    ( SELECT id FROM #__categories WHERE parent_id=$category_id )";
4

2 に答える 2

0

必要な評価の順序を強制するには、括弧を追加する必要があります。

SELECT * FROM #__content WHERE catid=$category_id OR (featured=1 AND catid IN 
( SELECT id FROM #__categories WHERE parent_id=$category_id ))

はよりANDも優先順位が高いためOR、括弧のない式は、trueの場合(featured=1 and catid=$category_id)、またはサブクエリで指定されcatidたリストに含まれている場合にtrueになります。IN

于 2013-01-18T11:17:28.533 に答える
0

参加はどうですか?

$query = "SELECT * FROM #__content WHERE featured=1 and catid=$category_id";
$query2 = "
SELECT * FROM #__content as con
LEFT JOIN #__categories as cat
on con.cat_id =cat.category_id
WHERE cat.parent_id=$category_id;"
于 2013-01-18T11:22:35.887 に答える