2013-02-16 4 views
-4

У меня есть эта таблица:Сложный SQL выбор на основании нескольких строк

идентификатор item_id приписывать количество

1   1    a     2 
2   1    b     3 
3   1    c     4 
4   2    a     3 
5   2    b     3 
6   3    a     2 
7   3    b     1 

Я хочу, чтобы все различные ITEM_ID, у которых есть атрибут «а» с величиной более 1 и в то же время атрибут «Ъ» с количеством более чем 2.

если я поставил

select item_id 
from table_name 
where (attribute = a and quantity > 1) and (attribute = b and quantity >2) 

Я не получаю результатов ...

Как это сделать? Пожалуйста, помогите быстро, это для бумаги, которую я должен буду на следующей неделе.

+0

lol ^^ у вас есть PayPal? – Sebas

+1

StackOverflow не подходит для этого вопроса. Мы не пишем ваш код для вас. Вам нужно сделать свое собственное кодирование, и если вы не знаете, почему что-то не работает должным образом, отправьте код с объяснением того, что вы ожидаете от него, и тем, что он на самом деле делает, включая все сообщения об ошибках. См. [About StackOverflow] (http://stackoverflow.com/about). –

+0

@john conde - я написал свой код, и я сказал, что он не работает и просит предложений. – TosheX

ответ

0

попробовать это

select item_id 
    from Table1 
    where (attribute = 'a' and quantity > 1) or (attribute = 'b' and quantity >2) 
    group by item_id 

SQL DEMO HERE

+1

есть и? Возможно, вы хотите отредактировать это. –

+0

как я сказал другому человеку, который предложил предложение OR, он не работал. если вы видите редактирование, которое я сделал по этому вопросу, мне удалось найти аналогичный вопрос с решением. спасибо хотя за ответ! – TosheX

+0

вы пробовали мой запрос? он даст другой user_id, как он показывает в демо, или что вы хотите точно? дайте мне знать –

1

Измените ваше положение, где на:

WHERE (attribute = a and quantity > 1) OR (attribute = b and quantity >2) 

И ваш выбор, чтобы:

SELECT DISTINCT item_id 
+0

извините, это просто вернет все результаты в зависимости от того, выполнено ли какое-либо из условий в любое время. Я хочу, чтобы оба условия были применимы. – TosheX

+0

@TosheX Отредактирован ответ. – hjpotter92

0

EDIT: РЕШИТЬ! После часа поиска через SO я нашел этот вопрос и его в основном то же самое, что и у меня, и есть ответ, который работает (первый).

SQL - Select Query for complex dynamic rows

В основном то, что парень сделал это соединить таблицу к себе столько раз, сколько необходимо, добавив следующее условие как условие последующего присоединяется к таблицы называется по-разному.

+0

Это просто снизит производительность вашего запроса. Может быть, вы хотите показать нам результирующий запрос и/или желаемый результат? – hjpotter92

+0

, как сказал парень в приведенной ссылке, позволяет сказать, что атрибуты - это продукты, а количество - сколько их продано, а id элемента - параметр дня. я хотел получить список дней, когда некоторые предметы продавались более определенного количества раз. Надеюсь, это станет более ясным? – TosheX

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