Autor Zpráva
Peter Zámožík
Profil *
Dobrý deň,

potreboval by som poradiť so začiatočníckym problémom v MySQL.
Mam tabuľku, a v nej polia napr:

id_from, id_to
1, 3
1, 5
1, 7
1, 8
8, 1
8, 1
5, 1

ja som na webe pod ID = 1, a potreboval by som unikatne IDčka, s ktorými prišlo moje ID do styku, čiže výsledok selectu: 3,5,7,8
Neviem si s tým poradiť, vedel by prosím niekto pomôcť?
Ďakujem!
pcmanik
Profil
Peter Zámožík:
Malo by to fungovať.
SELECT GROUP_CONCAT(DISTINCT GROUP_CONCAT(DISTINCT id_to), GROUP_CONCAT(DISTINCT id_from)) FROM tabulka WHERE id_from = 1 OR id_to = 1
Peter Zámožík
Profil *
Ďakujem za radu, avšak MySQL vyhodí chybovú hlášku: "#1111 - Invalid use of group function"
pcmanik
Profil
Peter Zámožík:
Moja chyba, takto by to malo byť už správne:
SELECT CONCAT_WS(',', GROUP_CONCAT(DISTINCT id_to), GROUP_CONCAT(DISTINCT id_from)) FROM tabulka WHERE id_from = 1 OR id_to = 1
Peter Zámožík
Profil *
ďakujem, skúsim si to ešte upraviť, takto je výsledok: 3,5,7,8,1,1,8,5 (neviem prečo ten DISTINCT nezafunguje), skúsim sa s tým ešte pohrať,
ešte raz ďiky
juriad
Profil
Vykašli se GROUP_CONCAT, spojení do jednoho stringu proveď až na úrovni aplikace, toto do databáze nepatří.
Raději proveď následující jeden select:
(SELECT DISTINCT id_to AS id FROM tabulka WHERE id_from = 1)
UNION
(SELECT DISTINCT id_from AS id FROM tabulka WHERE id_to = 1)
ORDER BY id
Peter Zámožík
Profil *
Obom Vám ďakujem, toto je presne co som potreboval.
Peter Zámožík
Profil *
Predsalen mám ešte jeden dotaz.
čo ak by som chcel zmenit ORDER BY na stamp, čiže by pribudlo pole stamp.

napadlo ma takéto niečo, ale vo výsledku mam duplicitu

(SELECT DISTINCT id_to AS id, MAX( stamp ) AS stamp
FROM tabulka
WHERE id_from =  '1'
GROUP BY id_to
ORDER BY stamp DESC)

UNION 

(SELECT DISTINCT id_from AS id, MAX( stamp ) AS stamp
FROM tabulka
WHERE id_to =  '1'
GROUP BY id_from
ORDER BY stamp DESC)

ORDER BY stamp DESC
Kajman
Profil
SELECT id,
       Max(stamp) AS stamp
FROM   ((SELECT id_to      AS id,
                Max(stamp) AS stamp
         FROM   tabulka
         WHERE  id_from = '1'
         GROUP  BY id_to)
        UNION
        (SELECT id_from    AS id,
                Max(stamp) AS stamp
         FROM   tabulka
         WHERE  id_to = '1'
         GROUP  BY id_from)) x
GROUP  BY id
ORDER  BY stamp DESC 
Peter Zámožík
Profil *
Vďaka!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0