Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Простой запрос / 25 сообщений из 30, страница 1 из 2
02.11.2017, 10:05
    #39546539
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Здравствуйте, туплю третий день, есть таблица LS примерно такая:
FIOBOOKМашаГусиСашаЛебедиПашаМирМашаЛебедиСашаГусиПашаГуси
Нужно все ФИО и Гуси и Лебеди
простой запрос where выдает всех гусей, лебедей, а как чтобы только в паре?
...
Рейтинг: 0 / 0
02.11.2017, 11:29
    #39546585
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Код: sql
1.
2.
3.
4.
5.
SELECT fio
FROM ls
WHERE book in ('Гуси', 'Лебеди')
GROUP BY fio
HAVING COUNT(DISTINCT book) = 2



Код: sql
1.
2.
3.
4.
5.
SELECT t1.fio
FROM ls t1, ls t2
WHERE t1.fio=t2.fio
  AND t1.book = 'Гуси'
  AND t2.book = 'Лебеди'
...
Рейтинг: 0 / 0
03.11.2017, 09:10
    #39547158
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Круто!!!
Вот только эти два запроса выдают разное количество строк :(
...
Рейтинг: 0 / 0
03.11.2017, 09:25
    #39547166
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Первый запрос группирует, второй нет. Добавьте во второй запрос группировку по t1.fio.
...
Рейтинг: 0 / 0
03.11.2017, 10:05
    #39547190
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Akina,
странно разница в 5 строк, просто у меня 35000 строк, по 1 варианту с группировкой 12317, по 2 варианту после группировки 12312
...
Рейтинг: 0 / 0
03.11.2017, 10:44
    #39547226
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
-danger-,
значит пора заняться верификацией данных
...
Рейтинг: 0 / 0
08.11.2017, 09:28
    #39549356
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
paver,

спасибо, нашлись эти три строчки, теперь все сошлось
...
Рейтинг: 0 / 0
08.11.2017, 09:28
    #39549358
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Akina,
Спасибо, все получилось.
...
Рейтинг: 0 / 0
08.11.2017, 09:39
    #39549362
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Когда задавала вопрос не учла еще что все ФИО и Гуси и Лебеди, но если при этом у Гусей value 2, то это фио в выборку не попадает.
FIOBOOKValueМашаГуси1МашаГуси2СашаЛебеди1ПашаМир1МашаЛебеди1СашаГуси1ПашаГуси1ТаняГуси1ТаняГуси2ТаняЛебеди1
Я могу продолжить в этой теме или лучше новую создавать?
...
Рейтинг: 0 / 0
08.11.2017, 10:19
    #39549381
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Код: sql
1.
WHERE value<>2
...
Рейтинг: 0 / 0
08.11.2017, 10:34
    #39549397
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
982183, это то понятно, но тогда Маша, Гуси,1 и Таня, Гуси,1 попадет в список, а их имена вообще в этом случае должны быть исключены
...
Рейтинг: 0 / 0
08.11.2017, 10:50
    #39549410
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Тогда
Код: sql
1.
NOT IN (SELECT .. WHERE value=2)

либо
Код: sql
1.
HAVING SUM(value=2)=0
...
Рейтинг: 0 / 0
08.11.2017, 11:05
    #39549421
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Код: sql
1.
HAVING MAX[(value)<>=2
...
Рейтинг: 0 / 0
08.11.2017, 11:07
    #39549423
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Код: sql
1.
HAVING MAX(value)<>2
...
Рейтинг: 0 / 0
08.11.2017, 11:58
    #39549467
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Спасибо всем, по отдельности запросы работают, а как их объединить?
...
Рейтинг: 0 / 0
08.11.2017, 12:00
    #39549468
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
А какой конечный результат вы бы хотели видеть исходя из предложенных начальных данных?
...
Рейтинг: 0 / 0
08.11.2017, 12:00
    #39549469
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Akina
Код: sql
1.
2.
3.
4.
5.
SELECT fio
FROM ls
WHERE book in ('Гуси', 'Лебеди')
GROUP BY fio
HAVING COUNT(DISTINCT book) = 2



Код: sql
1.
2.
3.
4.
5.
SELECT t1.fio
FROM ls t1, ls t2
WHERE t1.fio=t2.fio
  AND t1.book = 'Гуси'
  AND t2.book = 'Лебеди'



С
HAVING MAX(value)<>2
или
NOT IN (SELECT .. WHERE value=2)
либо
HAVING SUM(value=2)=0
...
Рейтинг: 0 / 0
08.11.2017, 12:02
    #39549470
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
982183, нужны все гуси, лебеди, но только в паре, чтобы у фио были и гуси и лебеди, но если у фио есть значение 2, то это фио не должно попасть в выборку вообще.
...
Рейтинг: 0 / 0
08.11.2017, 12:09
    #39549477
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
FIOBOOKValueМашаГуси1СашаЛебеди1МашаЛебеди1СашаГуси1ПашаГуси1ТаняГуси1ТаняЛебеди1

так?
...
Рейтинг: 0 / 0
08.11.2017, 12:11
    #39549479
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
982183,
должен остаться только Саша, потому что у него и Гуси и Лебеди и нет значения 2
...
Рейтинг: 0 / 0
08.11.2017, 12:13
    #39549481
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Код: sql
1.
2.
3.
4.
5.
SELECT FIO, BOOK 
FROM ls
WHERE book in ('Гуси', 'Лебеди')
GROUP BY FIO, BOOK  
HAVING COUNT(DISTINCT book) = 2 and max(Value) <> 2
...
Рейтинг: 0 / 0
08.11.2017, 12:15
    #39549483
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
-danger-982183,
должен остаться только Саша, потому что у него и Гуси и Лебеди и нет значения 2
А Таня?
...
Рейтинг: 0 / 0
08.11.2017, 12:19
    #39549484
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
982183, у Тани тоже есть значение 2, она не должна попасть в выборку.
...
Рейтинг: 0 / 0
08.11.2017, 12:24
    #39549489
-danger-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
конечный результат таблицы FIOBOOKValueМашаГуси1МашаГуси2СашаЛебеди1ПашаМир1МашаЛебеди1СашаГуси1ПашаГуси1ТаняГуси1ТаняГуси2ТаняЛебеди1
такой FIOСаша
...
Рейтинг: 0 / 0
08.11.2017, 12:28
    #39549491
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой запрос
Код: sql
1.
2.
3.
4.
5.
SELECT FIO
FROM ls
WHERE book in ('Гуси', 'Лебеди')
GROUP BY FIO
HAVING COUNT(DISTINCT book) = 2 and max(Value) <> 2



Проверяй
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Простой запрос / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]