SELECT DISTINCT * FROM (
SELECT DISTINCT sp0 FROM table1
UNION
SELECT DISTINCT sp1 FROM table1
UNION
SELECT DISTINCT sp2 FROM table1
UNION
SELECT DISTINCT sp3 FROM table1
) as q1
Выбор уникальных значений из таблицы.(MySQL)
Имеется такая вот например таблица...
---------sp0-----------------sp1--------------sp2----------------sp3
--------юрист---------секретарь-------программист-------менеджер
------менеджер----------юрист-----------юрист-------------столяр
-------водитель--------финансист---------юрист-----------водитель
То есть значения повторяются не только в столбцах но и в строках.
Как вывести только уникальные значения для всей таблицы ???
Вроде и не сложная задача, а не пойму с чего начать ???
Помогите олуху кто знает ?
Код:
Не тестил но по идее должно работать.
Хотя мне лично самому такой запрос не нравится - некрасивый он и ж*пой чую что можно проще, но времени на раздумья у меня к сожалению нет.
Если нужны уникальные строки (чего из условия не ясно), то можно как RussianSpy говорит, только без подзапроса (т.е. DISTINCT *). Если нужны строки, где ни в одном поле не повторяются значения (чего из условия не ясно), то нужно сравнивать значения (я бы сделал тупо через WHERE, хотя запрос получился бы массивным). А может другая уникальность нужна?
Цитата: Комаджу
Если нужны уникальные строки (чего из условия не ясно), то можно как RussianSpy говорит, только без подзапроса (т.е. DISTINCT *). Если нужны строки, где ни в одном поле не повторяются значения (чего из условия не ясно), то нужно сравнивать значения (я бы сделал тупо через WHERE, хотя запрос получился бы массивным). А может другая уникальность нужна?
Читаем что написал автор топика:
Цитата:
Как вывести только уникальные значения для всей таблицы ???
Соответственно без DISTINCT почти никак. Хотя можно использовать GROUP BY но меня просто в дрожь бросает от того как MySQL с ними работает потому и не привожу такой код, дабы люди не учились заведомо кривому SQL.
Цитата: RussianSpy
Читаем что написал автор топика:
Ыхъ. Ну, не показалось мне, что нужны уникальные значения полей в таблице.
тогда читаем пост снова ;)
Код:
SELECT DISTINCT * FROM (
SELECT DISTINCT sp0 FROM table1
UNION
SELECT DISTINCT sp1 FROM table1
UNION
SELECT DISTINCT sp2 FROM table1
UNION
SELECT DISTINCT sp3 FROM table1
) as q1
SELECT DISTINCT sp0 FROM table1
UNION
SELECT DISTINCT sp1 FROM table1
UNION
SELECT DISTINCT sp2 FROM table1
UNION
SELECT DISTINCT sp3 FROM table1
) as q1
Вообщем то кажется работает только в переменной q1 ничего не появляется !
Цитата: vadim_k
Вообщем то кажется работает только в переменной q1 ничего не появляется !
Что значит не появляется?
Все работает. Только что проверил.
$r=@mysql_query($zapros);
while($f=@mysql_fetch_array($r)) echo $f[q1];
Ничего не выводит хотя количечтво найденных комбинаций правильно(@mysql_num_rows($r))
Цитата: vadim_k
Делаю
$r=@mysql_query($zapros);
while($f=@mysql_fetch_array($r)) echo $f[q1];
Ничего не выводит хотя количечтво найденных комбинаций правильно(@mysql_num_rows($r))
$r=@mysql_query($zapros);
while($f=@mysql_fetch_array($r)) echo $f[q1];
Ничего не выводит хотя количечтво найденных комбинаций правильно(@mysql_num_rows($r))
Ну еще бы!! Надо ведь так:
Код:
$r=mysql_query($zapros);
while($f=mysql_fetch_array($r, MYSQL_ASSOC)) echo $f['sp0'];
while($f=mysql_fetch_array($r, MYSQL_ASSOC)) echo $f['sp0'];
Что за мания расставлять везде собак @ ?
q1 - это не переменная, а псевдоним результата выборки подзапроса.
У меня и так работает тоже
Спасибо за помощь !!!