Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Поиск уникальных значений из нескольких столюцов
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Поиск уникальных значений из нескольких столюцов

Страниц (3): [1] 2 3 »
 

1. ksedin - 18 Сентября, 2014 - 12:15:52 - перейти к сообщению
Привет всем)
Мне нужны из одной таблицы в бд вытащить уникальные строки по двум значениям.
Например есть такая таблица:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. user_id | user2_id
  3. 1             2
  4. 3             2
  5. 4             5
  6.  


Мне нужно сделать запрос к этой таблице, чтобы уникальные строки отбирались по двум столбцам. В данном случа запрос должен вернуть только первую и третью запись.
Это возможно? Я знаю, есть такая штука, как distinct, но она ищет только по уникальности одного столбца, а я слышал, что в нем можно составлять двойные условия, но как это сделать - не нашел
2. RickMan - 18 Сентября, 2014 - 12:32:44 - перейти к сообщению
"уникальные строки отбирались" - в каком месте они уникальные, если там есть повторения... и по поводу distinct вы себе задаете вопрос? или как? Если нам то мы точно на это ответить не можем...
3. Мелкий - 18 Сентября, 2014 - 12:33:00 - перейти к сообщению
Distinct отсекает повторяющиеся resultset, т.е. то, что указано в select.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT user_id, user2_id FROM ...
4. RickMan - 18 Сентября, 2014 - 12:45:11 - перейти к сообщению
Плохо искали. Первый же запрос в гугле "dictinct mysql" выдал вот что:
http://www[dot]mysql[dot]ru/docs/man/DIS[dot][dot][dot]ptimisation[dot]html - и примеры, и описание... Неужели трудно научиться гуглить? Или вы думаете по такому вопросу в интернете нет документации?
5. ksedin - 18 Сентября, 2014 - 13:07:02 - перейти к сообщению
Мелкий пишет:
Distinct отсекает повторяющиеся resultset, т.е. то, что указано в select.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT user_id, user2_id FROM ...


Я так делал уже, в первого, указанной после distinct он ищет уникальные записи, а вот со второго он просто берет значение из строки, которую нашел distinct
(Добавление)
RickMan пишет:
Плохо искали. Первый же запрос в гугле "dictinct mysql" выдал вот что:
http://www[dot]mysql[dot]ru/docs/man/DIS[dot][dot][dot]ptimisation[dot]html - и примеры, и описание... Неужели трудно научиться гуглить? Или вы думаете по такому вопросу в интернете нет документации?


Во-первых, это не то.
Во-вторых, у Вас месячные? Очень агрессивно ведете себя
6. Мелкий - 18 Сентября, 2014 - 13:18:11 - перейти к сообщению
ksedin пишет:
Я так делал уже, в первого, указанной после distinct он ищет уникальные записи, а вот со второго он просто берет значение из строки, которую нашел distinct

Докажите.
7. RickMan - 18 Сентября, 2014 - 13:30:25 - перейти к сообщению
Можешь попробовать что-то типа такого...
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT(id_1), id_2 FROM test GROUP BY id_2

И да, пример который выше не работает, проверил у себя на тестовой таблице... distinct срабатывает на первый солбец а второй просто делает выборку...
И нет, у меня не месячные. Научитесь просто гуглить или изъявлять нормально мысли. (ну или хотя бы грамотно)
8. ksedin - 18 Сентября, 2014 - 13:32:36 - перейти к сообщению
Мелкий пишет:
ksedin пишет:
Я так делал уже, в первого, указанной после distinct он ищет уникальные записи, а вот со второго он просто берет значение из строки, которую нашел distinct

Докажите.


Комментарий ниже и http://www[dot]w3schools[dot]com/sql/sql_distinct[dot]asp - попробуйте вот здесь
9. Sail - 18 Сентября, 2014 - 13:38:19 - перейти к сообщению
Мелкий пишет:
ksedin пишет:
Я так делал уже, в первого, указанной после distinct он ищет уникальные записи, а вот со второго он просто берет значение из строки, которую нашел distinct

Докажите.

Разночтение в том, что distinct удаляет "дублирующиеся строки в результирующем наборе данных".
Но ТС хочет странного, то есть вовсе не этого!
ksedin пишет:
Например есть такая таблица:
CODE (htmlphp):
скопировать код в буфер обмена
  1. user_id | user2_id
  2. 1             2
  3. 3             2
  4. 4             5
  5.  
Мне нужно сделать запрос к этой таблице, чтобы уникальные строки отбирались по двум столбцам. В данном случа запрос должен вернуть только первую и третью запись.

...
Кстати, а почему именно первую и третью, а не вторую и третью?!
10. ksedin - 18 Сентября, 2014 - 13:43:45 - перейти к сообщению
RickMan пишет:
Можешь попробовать что-то типа такого...
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT(id_1), id_2 FROM test GROUP BY id_2

И да, пример который выше не работает, проверил у себя на тестовой таблице... distinct срабатывает на первый солбец а второй просто делает выборку...
И нет, у меня не месячные. Научитесь просто гуглить или изъявлять нормально мысли. (ну или хотя бы грамотно)


Вау, работает) Спасибо большое)
(Добавление)
Sail пишет:
Мелкий пишет:
ksedin пишет:
Я так делал уже, в первого, указанной после distinct он ищет уникальные записи, а вот со второго он просто берет значение из строки, которую нашел distinct

Докажите.

Разночтение в том, что distinct удаляет "дублирующиеся строки в результирующем наборе данных".
Но ТС хочет странного, то есть вовсе не этого!
ksedin пишет:
Например есть такая таблица:
CODE (htmlphp):
скопировать код в буфер обмена
  1. user_id | user2_id
  2. 1             2
  3. 3             2
  4. 4             5
  5.  
Мне нужно сделать запрос к этой таблице, чтобы уникальные строки отбирались по двум столбцам. В данном случа запрос должен вернуть только первую и третью запись.

...
Кстати, а почему именно первую и третью, а не вторую и третью?!


Потому что первая строка попадет обработчику первей
11. Sail - 18 Сентября, 2014 - 13:48:25 - перейти к сообщению
ksedin пишет:
Потому что первая строка попадет обработчику первей

Ну, если значение user_id из множества соответствующих user2_id фиолетово, то действительно, вариант, предложенный RickMan.
12. ksedin - 18 Сентября, 2014 - 13:53:16 - перейти к сообщению
Sail пишет:
Ну, если значение user_id из множества соответствующих user2_id фиолетово


Вообще не фиолетово, но убрать такие строки я собирался на уровне пхпУлыбка А на уровне sql это возможно?
13. Sail - 18 Сентября, 2014 - 13:55:14 - перейти к сообщению
ksedin пишет:
но убрать такие строки я собирался на уровне пхп

Как php сможет убрать то, чего ему из базы не подадут на блюдечке?!
Тот запрос ведь не вернёт отсутствующие строки...
14. RickMan - 18 Сентября, 2014 - 13:55:41 - перейти к сообщению
Пример можно?
15. ksedin - 18 Сентября, 2014 - 14:03:09 - перейти к сообщению
Sail пишет:
ksedin пишет:
но убрать такие строки я собирался на уровне пхп

Как php сможет убрать то, чего ему из базы не подадут на блюдечке?!
Тот запрос ведь не вернёт отсутствующие строки...


Из базы придет массив со строчками, я переберу его forech`ем и уберу строки, где user_id будет совпадать с user2_id
(Добавление)
RickMan пишет:
Пример можно?

Это кому?

 

Powered by ExBB FM 1.0 RC1