2011-07-13 3 views
1

私はJOINSに精通していませんが、私はそれが私がやろうとしていることに必要なものだと思います。 SO、私は(カテゴリ別)私のデータベース内の項目の数を計算するためのSQLのこの逸品を得たの助けを借りてMYSQL:左結合のヘルプ? 2つのクエリとしては良いでしょうか?

SELECT SUM(`tid` IS NULL) AS `total_null`, 
     SUM(`tid` = 0) AS `total_zero`, 
     COUNT(DISTINCT `tid`) AS `other` 
    FROM `mark_list` 
WHERE `user_id` = $userid 

は、今私は、クエリが何をする必要があるか、別のテーブルをチェックしています:mark_options groupthem = 1かどうかを確認するにはを参照してください。 groupthem = 1の場合は、上記のクエリを使用する必要があります。 = 0groupthemは、私は次のクエリを使用したい場合:

SELECT tid, 
     COUNT(*) AS other 
    FROM mark_list 
    WHERE userid = $userid 

はそれがgroupthemは=、その後、PHPは、最終的などのクエリ1か0かを決定しているかどうかを確認するために2つのクエリ、最初のものを実行することをお勧めですSQL JOIN(または他のメソッド)を使用して単一の問合せで同じ関数を実行する方法はありますか。

ありがとうございます!

+1

すべてのクエリが必要な場合は、ここで質問しますか? :P – dynamic

+0

@ yes123申し訳ありませんが、私はちょうど2つの別のクエリとしてこれを行うかどうかについて混乱しています。 – Mark

+2

それはあなたの質問です時間の99%1のクエリがより速い – dynamic

答えて

2

Plzは担当者に送信します。 Kthxバイ。

SELECT SUM(`mark_list`.`tid` IS NULL) AS `total_null`, 
     SUM(`mark_list`.`tid` = 0) AS `total_zero`, 
     COUNT(DISTINCT `mark_list`.`tid`) AS `other`, 
     COUNT(`mark_list`.`tid`) AS `ungrouped`, 
     `mark_options`.`groupthem` 
    FROM `mark_list`, `mark_options` 
    WHERE `mark_list`.`user_id` = $userid 
GROUP BY `mark_options`.`groupthem` 
+0

報告が送信されました。 –

+0

@mootinatorありがとう!これは、groupthem = 1またはgroupthem = 0とは逆に動作しているようですが、簡単に修正できますか? – Mark

+0

@マークこのコメントは私を困惑させる。クエリの目的は、両方の結果を提供し、PHPに使用する列を決定させることでした。また、mark_optionsは単一の行を持つ表であると仮定しました。 –

関連する問題