2015-10-24 2 views
0

Мой вопрос: -Выберите оператор, объединяющий два разных столбца

Напишите инструкцию SELECT, которая возвращает список клиентов и продуктов, которые они купили в продажу (скидка). В результирующий набор должны быть включены LastName, FirstName, OrderDate, ProductName, ItemPrice, DiscountAmount и Quantity Используйте псевдонимы для таблиц. Сортировка окончательного результата, заданного LastName, OrderDate и ProductName.

Мой ERD: - ERD

Ответ: -

ВЫБРАТЬ LastName, FirstName, OrderDate, ProductName, ItemPrice, DiscountAmount, Количество

FROM Customers, Orders, OrderItems, Products 
    WHERE 
    Customers.CustomerID = Orders.CustomerID 
    AND 
    Orders.OrderID = OrderItems. OrderID 
    AND 
    OrderItems.ProductID = Products.ProductID 
    AND DiscountAmount > 0 
    ORDER BY LastName, OrderDate, ProductName 

Он работает отлично .. но мне просто интересно, есть ли лучший способ сделать это? Любые предложения !!?

+0

Я предлагаю использовать явные внутренние соединения. –

+0

Вы не использовали «псевдонимы для таблиц». –

+0

да, я просто задавался вопросом, где их использовать :) –

ответ

0

Одним из возможных усовершенствований было бы использовать явное присоединяется вместо неявного присоединиться к синтаксису, которые были устаревшими в 1992 году, а также использовать псевдонимы таблиц, чтобы сделать запрос более читаемым:

SELECT 
    c.LastName, 
    c.FirstName, 
    o.OrderDate, 
    p.ProductName, 
    oi.ItemPrice, 
    oi.DiscountAmount, 
    oi.Quantity 
FROM 
    Customers c 
INNER JOIN 
    Orders o ON c.CustomerID = o.CustomerID 
INNER JOIN 
    OrderItems oi ON o.OrderID = oi.OrderID 
INNER JOIN 
    Products p ON oi.ProductID = p.ProductID 
WHERE 
    oi.DiscountAmount > 0 
ORDER BY 
    c.LastName, 
    o.OrderDate, 
    p.ProductName; 

Обратите внимание, что эти изменения Безразлично» t влияет на производительность или результат запроса.

Возможно, вы также должны использовать агрегированные функции и суммировать сумму скидки и/или подсчитывать количество - вопрос не так ясен.

+0

Да, я думаю, что это делает его более читаемым и выглядит более чистым, так как ... моя работала, но была очень детской, я думаю .. это лучше .. спасибо :) –

Смежные вопросы