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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск уникальных значений из нескольких столюцов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
ksedin
Отправлено: 18 Сентября, 2014 - 12:15:52
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




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


Мне нужно сделать запрос к этой таблице, чтобы уникальные строки отбирались по двум столбцам. В данном случа запрос должен вернуть только первую и третью запись.
Это возможно? Я знаю, есть такая штука, как distinct, но она ищет только по уникальности одного столбца, а я слышал, что в нем можно составлять двойные условия, но как это сделать - не нашел


Отредактировано модератором: Мелкий, 18 Сентября, 2014 - 12:30:44
вы половину сообщения написали в неверной раскладке. Всё-таки принято перечитывать написанное.
 
 Top
RickMan
Отправлено: 18 Сентября, 2014 - 12:32:44
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




"уникальные строки отбирались" - в каком месте они уникальные, если там есть повторения... и по поводу distinct вы себе задаете вопрос? или как? Если нам то мы точно на это ответить не можем...
 
 Top
Мелкий Супермодератор
Отправлено: 18 Сентября, 2014 - 12:33:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Distinct отсекает повторяющиеся resultset, т.е. то, что указано в select.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT user_id, user2_id FROM ...


-----
PostgreSQL DBA
 
 Top
RickMan
Отправлено: 18 Сентября, 2014 - 12:45:11
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Плохо искали. Первый же запрос в гугле "dictinct mysql" выдал вот что:
http://www[dot]mysql[dot]ru/docs/man/DIS[dot][dot][dot]ptimisation[dot]html - и примеры, и описание... Неужели трудно научиться гуглить? Или вы думаете по такому вопросу в интернете нет документации?
 
 Top
ksedin
Отправлено: 18 Сентября, 2014 - 13:07:02
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Мелкий пишет:
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 - и примеры, и описание... Неужели трудно научиться гуглить? Или вы думаете по такому вопросу в интернете нет документации?


Во-первых, это не то.
Во-вторых, у Вас месячные? Очень агрессивно ведете себя
 
 Top
Мелкий Супермодератор
Отправлено: 18 Сентября, 2014 - 13:18:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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

Докажите.


-----
PostgreSQL DBA
 
 Top
RickMan
Отправлено: 18 Сентября, 2014 - 13:30:25
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Можешь попробовать что-то типа такого...
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT(id_1), id_2 FROM test GROUP BY id_2

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

(Отредактировано автором: 18 Сентября, 2014 - 13:31:14)

 
 Top
ksedin
Отправлено: 18 Сентября, 2014 - 13:32:36
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




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

Докажите.


Комментарий ниже и http://www[dot]w3schools[dot]com/sql/sql_distinct[dot]asp - попробуйте вот здесь
 
 Top
Sail
Отправлено: 18 Сентября, 2014 - 13:38:19
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




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

Докажите.

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

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

(Отредактировано автором: 18 Сентября, 2014 - 13:41:49)

 
 Top
ksedin
Отправлено: 18 Сентября, 2014 - 13:43:45
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




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.  
Мне нужно сделать запрос к этой таблице, чтобы уникальные строки отбирались по двум столбцам. В данном случа запрос должен вернуть только первую и третью запись.

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


Потому что первая строка попадет обработчику первей
 
 Top
Sail
Отправлено: 18 Сентября, 2014 - 13:48:25
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




ksedin пишет:
Потому что первая строка попадет обработчику первей

Ну, если значение user_id из множества соответствующих user2_id фиолетово, то действительно, вариант, предложенный RickMan.

(Отредактировано автором: 18 Сентября, 2014 - 13:53:43)

 
 Top
ksedin
Отправлено: 18 Сентября, 2014 - 13:53:16
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Sail пишет:
Ну, если значение user_id из множества соответствующих user2_id фиолетово


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



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




ksedin пишет:
но убрать такие строки я собирался на уровне пхп

Как php сможет убрать то, чего ему из базы не подадут на блюдечке?!
Тот запрос ведь не вернёт отсутствующие строки...
 
 Top
RickMan
Отправлено: 18 Сентября, 2014 - 13:55:41
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Пример можно?
 
 Top
ksedin
Отправлено: 18 Сентября, 2014 - 14:03:09
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Sail пишет:
ksedin пишет:
но убрать такие строки я собирался на уровне пхп

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


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

Это кому?
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB