powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как вывести строки без повтора, учитывая пустые поля.
4 сообщений из 4, страница 1 из 1
Как вывести строки без повтора, учитывая пустые поля.
    #39700107
Катяра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такая задача, где нужно вывести строки, которые не повторяются в таблице, также НЕ нужно выводить те строки где есть одна пустая ячейка(типа, которая может быть любым значением), но остальные поля имеют повтор в таблице.

Тут я вывела те строки, которые не имеют повтора, а также не имеют пустых полей.

select distinct Pole1,Pole2,Pole3
from TAB
where Pole1 IS NOT NULL and Pole2 IS NOT NULL and Pole3 IS NOT NULL

А вот тут я, вроде как, нашла те строки которые повторяются и одна из них имеет пустое поле:

select distinct T1.Pole1,T1.Pole2,T1.Pole3
from TAB T1,TAB T2
where (T1.Pole1 IS NULL and T1.Pole2=T2.Pole2 and T1.Pole3=T2.Pole3) OR
(T1.Pole1=T2.Pole1 and T1.Pole2 IS NULL and T1.Pole3=T2.Pole3) OR
(T1.Pole1=T2.Pole1 and T1.Pole2=T2.Pole2 and T1.Pole3 IS NULL)

Хотя похоже это не работает, потому что выводит и те которые не повторяются, но имеют пустое значение. Ибо, даже если есть пустое значение в строке, но остальные заполненные поля не имеют повтора в таблице, то эту строку тоже нужно выводить в ответ.
Помогите, пожалуйста, сделать правильную выборку.
...
Рейтинг: 0 / 0
Как вывести строки без повтора, учитывая пустые поля.
    #39700129
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КатяраНЕ нужно выводить те строки где есть одна пустая ячейкаЕсли посмотреть с другой стороны, то фраза будет звучать так: выбрать лишь те строки, у которых НЕ СУЩЕСТВУЕТ пустых ячеек. НЕ СУЩЕСТВУЕТ по английски - NOT EXISTS же? Вот про него в SQL и читайте...
...
Рейтинг: 0 / 0
Как вывести строки без повтора, учитывая пустые поля.
    #39700397
Катяра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна, я тут нашла ошибку в своих словах. Нужно вывести строки как раз таки в которых есть пустое поле, а остальные поля имеют дубликат в таблице. Например, строка (1 2 3) будет дубликатом строки 1 2 NULL и строку 1 2 3 выводить не нужно, т.к. по заданию NULL может быть любым значением. Поэтому в ответе должны быть строки с NULL, и те строки которые заполнены полностью и поля которых никак не дублируют поля строк, в которых есть NULL, воот, запутанное задание попалось :(
...
Рейтинг: 0 / 0
Как вывести строки без повтора, учитывая пустые поля.
    #39700486
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получится что-то вроде
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT *
FROM table t1
WHERE NOT EXISTS (  SELECT 1
                    FROM table t2
                    WHERE COALESCE(t1.field1, t2.field1) <=> COALESCE(t2.field1, t1.field1)
                      AND COALESCE(t1.field2, t2.field2) <=> COALESCE(t2.field2, t1.field2)
                    -- and so on...
                  )
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как вывести строки без повтора, учитывая пустые поля.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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