2013-03-24 3 views
-1

Мне нужно структурировать эти запросы, чтобы они были идеальным SQL. Запросы должны быть для базы данных SQL Server, у меня есть база данных StoresDB, таблица items_table.Как структурировать эти SQL-запросы, чтобы они были идеальным SQL?

мне нужно, чтобы получить

  1. общее количество элементов в пределах этой таблицы

  2. Количество элемента, где цена выше или равна, чем £ 10 - имя столбца сумма

  3. Список элементов в категории компьютеров - column name = 'comp_id', отсортированные по уменьшенной сумме.

Для получения указанных запросов, я попытался ниже:

  1. SELECT COUNT(*) FROM items_table

  2. Select * from items_table where amount >= 10

  3. Select * from items_table where comp_id = ’electronics’ desc

Я очень новичок в SQL и не уверен, правильно ли я попытался это сделать.

+0

Что такое идеальный SQL? ваши три вопроса выглядят нормально. Первый запрос правильный. Второй запрос: замените цену на сумму. 3-й запрос, присоединитесь к таблице comp. – RAS

+0

Вы можете улучшить a), используя 'SELECT COUNT (1) FROM items_table'. Таким образом, серверу не нужно искать все данные на жестком диске. Если вы не хотите, чтобы я был более понятным в вашем коде, просто выберите столбец первичного ключа вместо *. –

+0

@RAS ok спасибо, но вопрос c не указывает, что есть таблица comp, в которой он просто указывает список элементов в категории компьютеров, а имя столбца - comp_id? – Sam

ответ

0

a) Выглядит в порядке.

b) Вас спрашивают о счете, но запрашивают список.

SELECT COUNT(*) FROM items_table WHERE price >= 10 

с) Это выглядит хорошо, но вы пропускаете ORDER BY заявление.

SELECT * FROM items_table WHERE catID='electronics' ORDER BY price DESC 
1

Может быть, это хорошо знать несколько вещей при написании такого рода запроса:

а) SELECT COUNT(*) FROM items_table

Этот запрос написан правильно.

б) SELECT COUNT(*) FROM items_table WHERE amount >= 10

запроса в порядке, но выбрать для создания индексов, которые охватывают ИНЕК, в этом случае хорошо иметь не-кластерный индекс на amount колонки

с) SELECT * FROM items_table WHERE comp_id = 'electronics' ORDER BY price DESC

С этим последним запросом вы столкнулись с проблемой поиска всех столбцов в результате: SELECT * ..., который считается плохой практикой в ​​производстве, поэтому вам нужно разместить только столбцы SELECT, которые действительно нужны, а не все столбцы. Также вы можете создать некластеризованный индекс в столбце comp_id, включая столбцы из списка SELECT.

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