0

以下のコードを変換して、クエリを追加するのではなく、クエリを1つだけ必要とするかどうかを知りたいのですが、アイテムテーブルは1万をはるかに超えるアイテムでいっぱいですが、以下の方法は非常に時間がかかりますが、分類されていないアイテムをより速く表示する方法はありますか?

$CD1=mysql_query("select * FROM items");    
while($C1=mysql_fetch_array($CD1)){
    $sql=mysql_query("select * from category where sub='$C1[sub]'");
    if(mysql_num_rows($sql) == 0)
        echo "$C1[id]->$C1[sub]<br>";
}
4

2 に答える 2

1

カテゴリのないアイテムをフィルタリングするには、外部結合とwhere句を使用する必要があります

SELECT i.* FROM items i LEFT OUTER JOIN category c ON i.sub = c.id WHERE c.id IS NULL
于 2012-08-04T09:36:57.747 に答える
0

別のテーブルに対応する行がないテーブルの行を見つける一般的な方法の1つは、左結合を使用することです。

select id, sub
from items i
     left join category c on i.sub = c.sub
where c.sub is null

注意点として、select *テストコード以外では避ける必要があります。

于 2012-08-04T09:39:50.687 に答える