2017-12-29 32 views
1

몇 가지 지침이 필요합니다. 나는 코딩에 결함이 있음을 발견했다.두 번째 테이블에서 그룹 및 조인을 사용하여 하나의 테이블에서 행 수를 계산하십시오.

표 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 

는, 나는 더 많은 좌석을 사용할 수 있습니다 얼마나 많은 볼이 코스/이벤트에 항목을 계산해야합니다. (이 방법은 내가 "입력 할 수없는 사람들에게"알 필요가 있는지 여부를 구분이 코딩의 시점에서 중요하지 않기 때문에 그룹화가 필요합니다.

좋아, 여기 내 문제입니다. 훌륭한 작품, 아직 코스/이벤트에 대한 항목이 없습니다 어디에 내 결함. 나는 2 일 초보자가 (난 내 현재 쿼리가 표시되지 않습니다 이해하는)

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** <----- 

0 인 것을 보여주기 위해 위의 필요 제외 일부는 테이블을 조인했지만 행운이 없었습니다. (홀수 결과와 데이터베이스에서 SET SQL_BIG_SELECTS = 1이 필요하다고 말합니다.)

어떤 도움도 크게 감사하겠습니다. 이자형.

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

만약 내가 제대로 이해하고

는 하나의 방법은 상관 하위 쿼리를 사용합니다.
+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를 더 잘 지정해야한다고 생각합니다.) 부서는 나중에 여러 코스로 항목을 분할하는 데 사용됩니다. 그들은 "계산되지"않습니다. 이것이 내가 groupinfo 테이블을 필요로하는 이유입니다. 계산은 다른 표로 이동해야하지만 항목이 없으면 0을 표시하십시오. 이걸 가지고 노는 것을 보자.하지만 나는 왼쪽 조인과 운이 좋지 않았다.그러나 나는 그것을 잘못 설정했을 수도 있습니다. 나는 2 개의 테이블을 "연결"하기 위해 evid를 사용한다. – user3389848

+0

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