|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Есть две таблицы, humans и sales. В первой люди name, date_create. Во второй name, date_sale, human_id. В первой имена людей и дата регистрации, во второй название продукта, дата покупки, и id пользователя который купил. Нужны имена людей которые покупали флешки, но не покупали диски. Например человек Андрей купил и флешку и диск, Максим тоже. Другие только флешки. Нужно вывести только тех кто покупал флешку. Андрея и Максима не нужно показывать так как они флешки покупали. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2017, 20:58 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Я делал так: Код: plsql 1. 2.
Он выводит всех людей которые купили 'flash_disk' но и выводятся и те кто купил 'dvd_disk'. Нужно только тех кто купил 'flash_disk'. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2017, 23:03 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
dr.monstr, почитайте про [NOT] EXISTS -подзапросы. Это как раз Ваш случай. Потому как Вам нужно ввести всех тех, кто покупал флэшку, но при этом у кого не существует в списке покупок DVD-диска... :) ;) как вариант - использовать LEFT JOIN выборки покупателей флэшек с выборкой покупателей "не флэшек" (всего остального) с последующей фильтрацией только тех пользователей, для которых выборка "не флэшек" окажется пустой. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 04:39 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
dr.monstrЯ делал так: Код: plsql 1. 2.
Он выводит всех людей которые купили 'flash_disk' но и выводятся и те кто купил 'dvd_disk'. Нужно только тех кто купил 'flash_disk'. 1. и именно этот запрос работает? нет синтаксичских ошибок? 2. смысл этого совсем не понятен: where sales.name = 'flash_disk' and sales.name != 'dvd_disk' ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 11:00 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Ролг Хупин, Синтаксическая ошибка есть в "on user.id = sales.user_id", там должно быть "on users.id". Ну я хочу чтобы он показал мне только тех кто покупал 'flash_disk'. Как сейчас: Андрей flash_disk Илья flash_disk Максим flash_disk Андрей dvd_disk Он мне выводит всех (Андрей, Илья, Максим). А Максим тут лишний, хоть он и покупал flash_disk, но купил dvd_disk, его нам уже не надо. Нужно чтобы вывел только Илью и Максима. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 11:15 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
dr.monstrРолг Хупин, Синтаксическая ошибка есть в "on user.id = sales.user_id", там должно быть "on users.id". Ну я хочу чтобы он показал мне только тех кто покупал 'flash_disk'. Как сейчас: Андрей flash_disk Илья flash_disk Максим flash_disk Андрей dvd_disk Он мне выводит всех (Андрей, Илья, Максим). А Максим тут лишний, хоть он и покупал flash_disk, но купил dvd_disk, его нам уже не надо. Нужно чтобы вывел только Илью и Максима. мне не ясно, каким образом у вас получается такая выборка, если критерий указан Код: sql 1.
или вы что-то недоговариваете ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 12:14 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Ролг Хупин, Ну смотрим, что у нас есть. Андрей 'flash_disk' Андрей 'dvd_disk' Максим 'flash_disk' Илья 'flash_disk' По запросу Код: plsql 1.
он берет: Андрей 'flash_disk' Андрей 'dvd_disk' пропускает, т.к. sales.name != 'dvd_disk' Максим 'flash_disk' Илья 'flash_disk' Вывод: Андрей 'flash_disk' Максим 'flash_disk' Илья 'flash_disk' Как сделать чтобы Андрея не было? Так как Андрей купил 'flash_disk' и 'dvd_disk', по условию нужно чтобы только тех кто купил 'flash_disk' и больше ничего ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 12:24 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
dr.monstr...Как ...not exists ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 12:29 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
dr.monstrРолг Хупин, Ну смотрим, что у нас есть. Андрей 'flash_disk' Андрей 'dvd_disk' Максим 'flash_disk' Илья 'flash_disk' По запросу Код: plsql 1.
он берет: Андрей 'flash_disk' Андрей 'dvd_disk' пропускает, т.к. sales.name != 'dvd_disk' Максим 'flash_disk' Илья 'flash_disk' Вывод: Андрей 'flash_disk' Максим 'flash_disk' Илья 'flash_disk' Как сделать чтобы Андрея не было ? Так как Андрей купил 'flash_disk' и 'dvd_disk', по условию нужно чтобы только тех кто купил 'flash_disk' и больше ничего Вам не кажется, что это and sales.name != 'dvd_disk' лишнее в этом критерии Код: sql 1.
? вы выбираете всё, что sales.name = 'flash_disk', смысл указывать, что поле со значением 'flash_disk' не должно иметь значение равное 'dvd_disk'. Зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 12:40 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Щукина Аннаdr.monstr...Как ...not exists 100%! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 12:42 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
C NOT EXISTS не получилось, не знаю как реализовать. Сделал по другому, зато работает. Код: plsql 1. 2.
А по поводу NOT EXISTS, напишите пример как реализовывается. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 12:45 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Еще такой вопрос появился. Еще нужно сделать так, если пользователь купил 'dvd_disk' в прошлом месяце то его тоже добавлять. Андрей 'flash_disk' 20.07.2017 Андрей 'dvd_disk' 20.05.2017 Максим 'flash_disk' 20.07.2017 Илья 'flash_disk' 20.07.2017 Если Андрей купил диск не за последний месяц, то его тоже добавлять. Т.е. вывод будет выглядеть так: Андрей 'flash_disk' 20.07.2017 Андрей 'dvd_disk' 20.05.2017 Максим 'flash_disk' 20.07.2017 Илья 'flash_disk' 20.07.2017 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 13:10 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
dr.monstrЕще такой вопрос появился. Еще нужно сделать так, если пользователь купил 'dvd_disk' в прошлом месяце то его тоже добавлять. Андрей 'flash_disk' 20.07.2017 Андрей 'dvd_disk' 20.05.2017 Максим 'flash_disk' 20.07.2017 Илья 'flash_disk' 20.07.2017 Если Андрей купил диск не за последний месяц, то его тоже добавлять. Т.е. вывод будет выглядеть так: Андрей 'flash_disk' 20.07.2017 Андрей 'dvd_disk' 20.05.2017 Максим 'flash_disk' 20.07.2017 Илья 'flash_disk' 20.07.2017 1. вы не ответили не мой вопрос по поводу критерия 2. давайте ваш вариант, будем анализировать ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 14:15 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Ролг Хупин, давайте. Нужен запрос, который выберет имена пользователей, которые когда либо покупали флешку, но не покупали DVD диск за последний месяц ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 14:19 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Пока есть вот такой вариант, но он не правильно работает. Выводит еще Олега который вообще ничего не купил, знаю почему выводит, просто не знаю как правильно сделать. И еще выводит Алексея который тоже ничего из этого не покупал. Вот код: Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 14:22 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Вот правильный, предыдущий от другого Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 14:23 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
dr.monstrВот правильный, предыдущий от другого Код: plsql 1. 2. 3. 4. 5.
Ладно, не хотите отвечать - не надо. Как такое? Список юзеров, кот покупал флешдиск, но не в списке тех, кто покупал все, что угодно, но не флешдиск в последний месяц select * from users JOIN sales on user.id = sales.user_id where sales.name = 'flash_disk' and users.id not in( select sales.client_id from sales where sales.name != 'flash_disk' and sales.date > Now() - interval '1 month' ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 14:47 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
[quot Ролг Хупин]dr.monstrРолг Хупин, Вы про это: Вам не кажется, что это and sales.name != 'dvd_disk' лишнее в этом критерии ?? Может и лишнее, я пробую по разному. Кстати ваш код не сработал ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 14:56 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Можно использовать 1) UNION/INTERSECT/EXCEPT, или 2) OUTER JOIN, или 3) IN/NOT IN, или 4) EXISTS/NOT EXISTS. > Список юзеров, кот покупал флешдиск, но не в списке тех, кто покупал все, что угодно, но не флешдиск в последний месяц Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 15:21 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
LeXa NalBat<> > Список юзеров, кот покупал флешдиск, но не в списке тех, кто покупал все, что угодно, но не флешдиск 'dvd_disk' в последний месяц Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
если юзвери так и шастають, раздувать наборы перед except--ом джойнами лучше не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 15:52 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
qwwq, оооо !!!! Работает как надо!!! Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 16:00 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
qwwq, что значит в строке 'SELECT 1 from sales', 1 ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 16:02 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
Молодец!!! Спасибо большое! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 16:33 |
|
Помогите с запросом
|
|||
---|---|---|---|
#18+
dr.monstrМолодец!!! Спасибо большое! " Нужно вывести только тех кто покупал флешку . Андрея и Максима не нужно показывать так как они флешки покупали. " Вас *** поймёшь, вот, что там написано? Почему не надо показывать А и М? Или надо? Если там ошибка, тогда надо исправить устроивший вас запрос ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 18:08 |
|
|
start [/forum/topic.php?fid=53&fpage=69&tid=1996345]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 141ms |
0 / 0 |