1

私がこのようなクエリを書くといいですか:-(where条件のクエリを参照してください)

SELECT distinct(id) "idea_id" 
FROM ideas 
WHERE deleted_by_user = 0 AND moderation_flag = 1 AND 
user_id in (select id 
            from users 
            where confirm like "yes") 
ORDER BY time_of_creation DESC

このクエリに問題がある場合はお知らせください:事前に感謝します。

4

4 に答える 4

0
SELECT distinct i.id "idea_id" 
FROM ideas i join users u
on i.user_id=u.id and u.confirm ='yes'
WHERE i.deleted_by_user = 0 
AND i.moderation_flag = 1 
ORDER BY i.time_of_creation DESC
于 2012-11-06T07:31:02.460 に答える
0
SELECT  distinct a.ID idea_id
FROM    ideas a
        INNER JOIN users b
            ON a.user_id = b.id
WHERE   a.deleted_by_user = 0 AND 
        a.moderation_flag = 1 
        b.confirm = 'YES'
ORDER BY time_of_creation DESC
于 2012-11-06T07:31:23.380 に答える
0

あなたの質問に答えるために-サブクエリの使用に問題はありません。

一方、何らかの方法でクエリを作成する場合は、(少なくとも)3つの異なることを考慮する必要があります。

  1. データベースはクエリをどの程度効率的に実行しますか?(データベースが小さい場合、これはまったく問題にならない可能性があります)
  2. これを作成して書くのはどれくらい簡単ですか?-これはしばしば接続します
  3. 私のコードを読んでいる他の誰かにとって、これはどれほど簡単に理解できますか?(そして、1年前に書いたコードを調べれば、私自身が「他の誰か」として数えられるかもしれません...)

効率が重要となるサイズのデータ​​ベースがある場合、クエリを作成する方法を選択する最良の方法は、通常、さまざまな方法でクエリを記述し、データベースでテストすることです。(ただし、データベースのクエリオプティマイザは非常に優れていることが多く、問題ではありません)

于 2012-11-06T08:21:25.737 に答える
0

このクエリは、次の 2 つの方法で記述できます。

SELECT DISTINCT(i.id) "idea_id" 
FROM ideas i 
INNER JOIN users u ON i.user_id = u.id 
WHERE i.deleted_by_user = 0 AND i.moderation_flag = 1 AND u.confirm = 'yes' 
ORDER BY i.time_of_creation DESC;

SELECT DISTINCT(i.id) "idea_id" 
FROM ideas i 
WHERE i.deleted_by_user = 0 AND i.moderation_flag = 1 AND 
EXISTS (SELECT * FROM users u WHERE i.user_id = u.id  AND u.confirm = 'yes')
ORDER BY i.time_of_creation DESC;
于 2012-11-06T07:47:35.783 に答える