I'm trying to do this
SELECT
`projects`.*,
(SELECT
COUNT(`leads`.`id`),
`pixel`.`uuid`,
`pixel`.`project_id`
FROM `leads`
LEFT JOIN `pixel` ON `leads`.`pixel` = `pixel`.`uuid`
WHERE `projects`.`id` = `pixel`.`project_id`
) as leads
FROM `projects`
But I can't since my subquery select has more than one column, but I must have it so I can make the join, anyway around this? (all I need is the count) thank you.
Change your correlated Subquery
to Inner Join
to show all the columns from your subquery
SELECT projects.*,
a.*
FROM projects P
INNER JOIN (SELECT Count(leads.id) Cnt_id,
pixel.uuid,
pixel.project_id
FROM leads
LEFT JOIN pixel
ON leads.pixel = pixel.uuid) A
ON projects.id = A.project_id
I recommend you try to avoid the subquery:
SELECT
projects.*,
IFNUL(COUNT(leads.id).0) AS Cnt_id
FROM
projects,
LEFT JOIN pixel ON projects.id = pixel.project_id
LEFT JOIN leads ON leads.pixel = pixel.uuid
GROUP BY
projects.id
I suspect this will be a lot faster.
This is the answer
SELECT
`projects`.*,
(SELECT
COUNT(`pixel`.`project_id`)
FROM `pixel`
WHERE `projects`.`id` = `pixel`.`project_id`) AS `num_pixels`,
(SELECT COUNT(`leads`.`id`) FROM `leads`
LEFT JOIN `pixel` ON `leads`.`pixel` = `pixel`.`uuid`
WHERE `projects`.`id` = `pixel`.`project_id`) AS `num_leads`
FROM `projects`
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.