Autor | Zpráva | ||
---|---|---|---|
Peter Zámožík Profil * |
#1 · Zasláno: 30. 1. 2013, 09:46:05
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 * |
#3 · Zasláno: 30. 1. 2013, 10:09:51
Ďakujem za radu, avšak MySQL vyhodí chybovú hlášku: "#1111 - Invalid use of group function"
|
||
pcmanik Profil |
#4 · Zasláno: 30. 1. 2013, 10:16:16
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 * |
#5 · Zasláno: 30. 1. 2013, 10:29:08
ď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 |
#6 · Zasláno: 30. 1. 2013, 11:02:35
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 * |
#7 · Zasláno: 30. 1. 2013, 11:09:30
Obom Vám ďakujem, toto je presne co som potreboval.
|
||
Peter Zámožík Profil * |
#8 · Zasláno: 30. 1. 2013, 12:45:12
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 |
#9 · Zasláno: 30. 1. 2013, 13:18:59
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 * |
#10 · Zasláno: 30. 1. 2013, 13:38:05
Vďaka!
|
||
Časová prodleva: 11 let
|
0