LINUX.ORG.RU

mysql, выборка

 


0

1

Всем доброго времени суток. Затупил с запросом, нужна помощь. В результате выборки вот такой набор

id1	id2
4	1
1	4
. Можно ли каким-то образом заставить mysql считать такой набор одинаковым? Группировка не помогает, конкатенация тоже - при сравнении строк они считаются разными

Ответ на: комментарий от A1

Есть таблица контактов (id,name). Есть таблица друзей(contact_id, friend_id). Связь односторонняя - id 1 друг id 4, но id 4 не друг id 1. Если не в таблицу не занесена такая связь явно, как в приведенном результате выборки. Мне нужно выбрать вот таких полных друзей, убрав дубляжи(в приведенном результате выборки у меня и есть дубляж). Полных друзей я выбрал, аж двумя способами - через сравнение id и через GROUP_CONCAT и IN. Но от дублей результатов не могу избавиться

dolblatanna
() автор топика
Ответ на: комментарий от dolblatanna

честно говоря не до конца понял какие у тебя выборки, но

Но от дублей результатов не могу избавиться

см distinct и group by

kiotoze ★★★★
()
Последнее исправление: kiotoze (всего исправлений: 1)
Ответ на: комментарий от dolblatanna
SELECT DISTINCT
    IF(t1.contact_id > t1.friend_id, t1.contact_id, t1.friend_id ) contact_id,
    IF(t1.contact_id > t1.friend_id, t1.friend_id,  t1.contact_id) friend_id
    FROM cftest t1
    INNER JOIN cftest t2
        ON t2.contact_id = t1.friend_id
            AND t2.friend_id = t1.contact_id

Что первое пришло в голову.

deep-purple ★★★★★
()
Ответ на: комментарий от dolblatanna

Ты лучше создай еще одну таблицу для «парных» френдов, и при добавлении в други обмазывайся ей для проверок и изменений. Она же и на селект твоего случая будет, вместо вот этих жойнов, ифов и дистинктов. Ибо незачем проверять связи каждый раз во время выборки.

deep-purple ★★★★★
()

Вангую, что дело не в mysql, а в кривом проектировании структуры данных. Скорее всего в неумении организовать связь многи-ко-многим

r_asian ★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.