У меня следующий синтаксис sql. Это прекрасно работает, но мне было интересно, есть ли способ написать этот синтаксис проще, поскольку MAX (ra0.DescPriority) использует одно и то же соединение в таблице.Простой синтаксис SQL? Какой лучше синтаксис?
SELECT DISTINCT Items_1.ImageID, Items_1.SubcategoryID2, Items_1.AddDate,
(SELECT MAX(ra0.DescPriority) AS Expr1
FROM Items INNER JOIN
Attribs AS ra0 ON Items.ImageID = ra0.ImageID) AS Pri
FROM Items AS Items_1 INNER JOIN
Attribs AS ra0 ON Items_1.ImageID = ra0.ImageID LEFT OUTER JOIN
v_DisplayStockPrice AS v_DisplayStockPrice_1 ON Items_1.ImageID = v_DisplayStockPrice_1.ImageID INNER JOIN
Attribs AS ra1 ON ra0.ImageID = ra1.ImageID
WHERE (Items_1.deleted NOT IN (1, 2)) AND (Items_1.SubcategoryID2 = 'ORD')
ORDER BY Pri, Items_1.AddDate DESC
Итак, я придумал этот синтаксис.
SELECT DISTINCT Items_1.ImageID, Items_1.SubcategoryID2, Items_1.AddDate, MAX(ra0.DescPriority) AS Pri
FROM Items AS Items_1 INNER JOIN
Attribs AS ra0 ON Items_1.ImageID = ra0.ImageID LEFT OUTER JOIN
v_DisplayStockPrice AS v_DisplayStockPrice_1 ON Items_1.ImageID = v_DisplayStockPrice_1.ImageID INNER JOIN
Attribs AS ra1 ON ra0.ImageID = ra1.ImageID
WHERE (Items_1.deleted NOT IN (1, 2)) AND (Items_1.SubcategoryID2 = 'ORD')
GROUP BY Items_1.ImageID, Items_1.SubcategoryID2, Items_1.AddDate
ORDER BY Pri, Items_1.AddDate DESC
Какой синтаксис SQL лучше? Или есть лучший способ написать этот запрос?
Вы получите более качественные ответы, если сможете свернуть свои примеры с существенной разницы, о которых вы просите. – harpo
Трудно понять запросы, которые имеют смесь объединений в предложении from и подзапросы в предложении select (которые являются просто альтернативной формой объединения). Вы должны быть последовательны в том, как вы выражаете свои объединения. Не изучая ваш SQL слишком подробно, я бы предпочел ваш второй пример синтаксиса, потому что все соединения выражены одинаково. –