0

2 つのテーブルがあり、最初のテーブルが呼び出されteams、2 つ目のテーブルが呼び出されcpd、この結果が必要になります (以下の結果画面を参照)。私は自分で試しましたが、成功しませんでした (以下の練習問題を参照してください)。

チームテーブル

id    name               sub_cat_id
1     SACRAMENTO KINGS   19
2     KINGS              19
3     MIMAMI HEAT        19
4     HEAT               20
5     KITE               20

cpd テーブル

id team_id status added_date
1  3       1      2012-05-26
2  3       1      2012-05-27
3  3       0      2012-05-28

クエリの練習

SELECT 
t.`id`,t.`name`,IFNULL(cpd.status,0) AS resultStatus,IFNULL(cpd.added_date,CURDATE()) AS added_date
FROM `teams` t
LEFT JOIN cpd  ON cpd.team_id = t.id 
WHERE t.`sub_cat_id` = 19 OR cpd.added_date = CURDATE()

結果画面 (画面で黒色の行のみ必須)

ここに画像の説明を入力

アップデート

説明 ?

  1. sub_cat_id = 19チームテーブルでこのように関連している行を取得しようとしています
  2. で参加team table_cpd tablecpd.status filed
  3. cpd.statuscpd table同様に現在の日付と関連付ける必要があります2012-05-28
4

3 に答える 3

0

選択t。id、t。name、IFNULL(cpd.status、0)AS resultStatus、IFNULL(cpd.added_date、CURDATE())AS add_date FROM teamst LEFT JOIN cpd ON cpd.team_id = t.idWHEREt。sub_cat_id=19またはcpd.added_date=CURDATE()GROUP BY t.id

于 2012-05-28T12:46:06.997 に答える
0

目的の結果を得るには、複数の方法があります。

例えば:

SELECT t.`id`,t.`name`,
       IFNULL(cpd.status,0) AS resultStatus,
       IFNULL(cpd.added_date,CURDATE()) AS added_date
FROM `teams` t
INNER JOIN cpd  ON (cpd.team_id = t.id AND cpd.status = 0) 
WHERE t.`sub_cat_id` = 19 
      OR 
      cpd.added_date = CURDATE()
于 2012-05-28T12:46:43.330 に答える
0

JOINON cpd.team_id = t.idはcpdテーブルと1つのタプルのみを照合するため、他のタプルの日付はNULLに設定されます(LEFT JOINを実行しているため)。したがって、whereクエリは1つのタプルのみを提供します。

于 2012-05-28T12:47:08.220 に答える