2017-12-29 30 views
1

私はいくつかのガイダンスが必要です。私はコーディングの欠陥を発見した。2番目のテーブルからグループを使用して1つのテーブルからmysqlの行をカウントしてください。

表1:eventinfo

id 
evid 
eventtype 
division 
evtdate 
tod 

プラスより多くのフィールドが、この

SQLクエリのために重要ではありません:

SELECT evid, eventype, evtdate , tod 
FROM `eventinfo` 
WHERE evid = 105 


は、私は2つのテーブルを持っています

eventtype  division evtdate tod 
beginner  0 2018-02-17 AM 
intermediate 1 2018-02-17 AM 
intermediate 2 2018-02-17 AM 
advanced  1 2018-02-17 AM 
advanced  2 2018-02-17 AM 
beginner  0 2018-02-18 AM 
intermediate 1 2018-02-18 AM 
intermediate 2 2018-02-18 AM 
advanced  1 2018-02-18 AM 
advanced  2 2018-02-18 AM 

表2:エントリ

id 
entid 
firstname 
lastname 
eventcat 
evtdate 
division 
tod 

プラスより多くの行が、これのために重要ではありません。

SQLクエリ:私は必要なページで

SELECT evid, eventcat, evtdate , tod , COUNT(*) AS count 
FROM entries 
WHERE evtid= '105' and evtstatus= 'pending' 
GROUP BY evtdate, tod , evntcat 

eventcat  evtdate  tod count 
Advanced  2018-02-17 AM 35 
Intermediate 2018-02-17 AM 18 
Beginner  2018-02-17 AM 4 
Advanced  2018-02-18 AM 35 
Intermediate 2018-02-18 AM 18 

、私は席が利用可能であるか、より多くのを確認するには、このコース/イベントにエントリをカウントする必要があります。 (このように私は "入力することができない人に告げる必要があるかどうかを知っている"私は、コーディングのこの時点で部門は重要ではないので、グループ化が必要です。

OK、ここに私の問題です。私の欠陥を除き、素晴らしい作品のコース/イベントのためのエントリはまだありませんところである。私は、第二日初心者が0(私は私の現在のクエリが表示されません理解している)

eventcat  evtdate  tod count 
Advanced  2018-02-17 AM 35 
Intermediate 2018-02-17 AM 18 
Beginner  2018-02-17 AM 4 
Advanced  2018-02-18 AM 35 
Intermediate 2018-02-18 AM 18 
**Beginner  2018-02-18 AM 0** <----- 

であることを示すために、上記を必要とします私はいくつかのテーブルを結合しようとしましたが、運がありません(奇妙な結果とデータベースはSET_BIG_SELECTS = 1が必要だと言っています)

どんな助けでも大いに感謝していますe。

select ei.*, 
     (select count(*) 
     from entries e 
     where e.evtid = ei.evtid and e.evtstatus = 'pending' 
     ) as cnt 
from eventinfor ei 
+0

はあなたが必要 –

+0

2018-02-18を「初心者」にしたいのはなぜですか? –

答えて

0

私が正しく理解していれば

は、1つの方法は、相関サブクエリを使用しています。
+0

これは私が必要としていたものに非常に近いものでした。 fromとvoilaの後ろのステートメントとグループ化ステートメントへのいくつかの変更。私はこれが私がする必要があったものだと思っていました。ただそれを働かせることができませんでした。再度、感謝します!!!! – user3389848

1

使用LEFT JOIN:: `2つのテーブルをjoin`左に

SELECT i.eventtype, i.evtdate , i.tod , COUNT(*) AS count 
FROM eventinfo AS i 
LEFT JOIN entries as e On e.eventcat = i.eventtype 
GROUP BY i.eventtype, i.evtdate , i.tod ; 

demo

+0

表1の1と2は区分です。 (それをより良く指定するためにはAとBを入れておいたはずです)部門は後で異なるコースにエントリーを分割するために使用されます。彼らは "数えられていません"。このため、私はgroup eventinfoテーブルが必要です。カウントは他のテーブルに移動する必要がありますが、エントリがない場合は0を表示します。私はこれを見るために遊ぶことができますが、私は左の結合で運がなかった。しかし、私はそれを間違って設定している可能性があります。私は2つのテーブルを "リンク"するためにevidを使います。 – user3389848

+0

[link] http://sqlfiddle.com/#!9/db06a7/4 [/ link] – user3389848

関連する問題