SELECT `prod`.`name`, `prod`.`price`,
GROUP_CONCAT(CONCAT(`atr`.`nameAttribute`, '=' , `val`.`attributeValue`) as `attribute`,
FROM `products` as `prod`
LEFT JOIN `productAttribute` as `atr` ON `prod`.`idProduct` = `atr`.`idProduct`
LEFT JOIN `attributeValue` as `val` ON `atr`.`idAttribute` = `val`.`idAttribute`
WHERE `prod`.`idCategory` = :idCategory
GROUP BY `prod`.`idProduct`;
SELECT `u1`.`name`, `u2`.`name`, COUNT(*) AS `count`
FROM `users_groups` AS `ug1`
JOIN `users_groups` AS `ug2`
ON `ug2`.`group_id` = `ug1`.`group_id`
AND `ug2`.`user_id` > `ug1`.`user_id`
JOIN `users` AS `u1`
ON `u1`.`id` = `ug1`.`user_id`
JOIN `users` AS `u2`
ON `u2`.`id` = `ug2`.`user_id`
GROUP BY `ug1`.`user_id`, `ug2`.`user_id`
ORDER BY `count` DESC
LIMIT 1
FROM products prod
INNER JOIN categories cat ON prod.idCategory = cat.idCategory
Это тоже понятно, присоединяется к товару название категории.INNER JOIN productAttribute atr ON cat.idCategory = atr.idCategory
И здесь ясно, присоединяем список атрибутов для этой категории.INNER JOIN attributeValue val ON cat.idCategory = val.idCategory
А вот здесь непонятно, зачем для товара брать все значения атрибутов его категории? Нужно присоединять только значение уже присоединённого атрибута для данного товара. idCategory в таблице attributeValue вообще быть не должно. INSERT INTO `table` (`two`, `three`)
SELECT `t1`.`two`, `t1`.`three`
FROM (
SELECT :two AS `two`, :three AS `three`
) AS `t1`
LEFT JOIN `table` AS `t2` USING (`two`, `three`)
WHERE `t2`.`two` IS NULL;
SELECT `dates`.`date`, IFNULL(`t1`.`count`, 0) AS `cnt1`,
IFNULL(`t2`.`count`, 0) AS `cnt2`, IFNULL(`t3`.`count`, 0) AS `cnt3`
FROM (
SELECT `date` FROM `table1`
UNION SELECT `date` FROM `table2`
UNION SELECT `date` FROM `table3`
) AS `dates`
LEFT JOIN (
SELECT `date`, COUNT(*) AS `count` FROM `table1` GROUP BY `date`
) AS `t1` ON `t1`.`date` = `dates`.`date`
LEFT JOIN (
SELECT `date`, COUNT(*) AS `count` FROM `table2` GROUP BY `date`
) AS `t1` ON `t2`.`date` = `dates`.`date`
LEFT JOIN (
SELECT `date`, COUNT(*) AS `count` FROM `table3` GROUP BY `date`
) AS `t1` ON `t3`.`date` = `dates`.`date`
ORDER BY `dates`.`date`
$date = date_create($x[0]['time']);
echo date_format($date, 'd.m.Y H:i');