exten => _000XXX,1,SIPAddHeader(Call-Info:\;answer-after=0)
same => n,Page(SIP/${EXTEN:3},is)
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 вообще быть не должно. $(this).val($(this).val().substr(0, maxLength));
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;