Reputation: 1111
i have two tables that i want to connect,
this is table 1 "calendar"
I have this query
SELECT calendar.datefield AS DATE, IFNULL( count( lead.insertDate ) , 0 ) AS task FROM lead RIGHT JOIN calendar ON ( DATE( lead.insertDate ) = calendar.datefield ) GROUP BY DATE LIMIT 30
It works great, this is the result i get:
the thing is that i want to filter the data by lead.lpid
.
I tried to add at the end of the query 'WHERE lead.lpid = x' and add at the begining of the query call for lead.lpid data like this:
SELECT lead.lpid, calendar.datefield AS DATE,
IFNULL( count( lead.insertDate ) , 0 ) AS task
FROM lead
RIGHT JOIN calendar ON ( DATE( lead.insertDate ) = calendar.datefield )
GROUP BY DATE LIMIT 30 WHERE lead.lpid = 9
but i get this error
.....'WHERE lead.lpid = 9' at line 5
I am kind'a lost. any help would be great!
Here is my SQL fiddle, I have tried query: SQLFiddle
Upvotes: 0
Views: 94
Reputation: 777
SELECT lead.lpid,
calendar.datefield AS DATE,
IFNULL(count(lead.insertDate), 0) AS task
FROM lead
RIGHT JOIN calendar ON (DATE(lead.insertDate) = calendar.datefield)
GROUP BY DATE
HAVING lead.lpid = 9 LIMIT 30
use sql formater online: sqlformat
Upvotes: 0
Reputation: 4501
place of Where is wrong:
SELECT lead.lpid, calendar.datefield AS DATE,
IFNULL( count( lead.insertDate ) , 0 ) AS task
FROM lead
RIGHT JOIN calendar ON ( DATE( lead.insertDate ) = calendar.datefield )
WHERE lead.lpid = 9
GROUP BY DATE LIMIT 30
Note: WHERE must be before GROUP BY
New Query as you want:
SELECT lead.lpid, calendar.datefield AS DATE,
IFNULL( count( lead.insertDate ) , 0 ) AS task
FROM lead
RIGHT JOIN calendar ON ( DATE( lead.insertDate ) = calendar.datefield )
AND lead.lpid = 9
GROUP BY DATE LIMIT 30
Upvotes: 1
Reputation: 3756
SELECT lead.lpid, calendar.datefield AS DATE,
IFNULL( count( lead.insertDate ) , 0 ) AS task
FROM lead
RIGHT JOIN calendar ON ( DATE( lead.insertDate ) = calendar.datefield )
WHERE lead.lpid = 9 GROUP BY DATE LIMIT 30
Upvotes: 1