Autor | Zpráva | ||
---|---|---|---|
Max258 Profil * |
#1 · Zasláno: 7. 10. 2010, 23:54:21
Potreboval by som poradit s komplikaciou, ktora mi uz dva dni lame hlavu.
O co ide? Mam tabulku uzivatelia: id | title -------------- 1 | Alojz 2 | Tibor a dalsiu tabulku dovolenka: id | fieldname | value ----------------------------------------------- 1 | longitude | 12.584 1 | latitude | 45.258 1 | description | poznamka 2 | longitude | 22.587 2 | latitude | 124.258 Potreboval by som vytvorit 1 prikaz SQL bez php, ktory by mi dokazal priradit uzivatelovi podla unikatneho id dovolenku, ktora ma taktiez unikatne id a teda zhodne. Problem nastava tym, ze som skusal pouzit funkciu JOIN LEFT lenze v tabulke sa hodnoty opakuju a neporiesim to ani aliasmi. Idealne by bolo keby nazov longitude obsahoval hodnotu pre id atd... Vedel by mi niekto nieco poradit alebo ma nasmerovat k rieseniu? |
||
Tori Profil |
#2 · Zasláno: 8. 10. 2010, 00:16:34
vazební tabulka (sloupce id_user, id_dovolenka)?
|
||
Kajman_ Profil * |
#3 · Zasláno: 8. 10. 2010, 09:18:26
Můžete použít ten left join, kde se hodnoty (o uživateli) opakují, nebo dva dotazy a vždy to zpracovat v php. Porovnání obou přístupů je na
http://php.vrana.cz/srovnani-dotazu-do-zavislych-tabulek.php Pokud tam jsou jen tahle tři pole (což asi nebudou, protože pak by taková struktura postrádala smysl), tak by šlo něco jako select u.*, d1.value longitude, d2.value latitude, d3.value description from uzivatelia u left join dovolenka d1 on u.id=d1.id and d1.fieldname='longitude' left join dovolenka d2 on u.id=d2.id and d2.fieldname='latitude' left join dovolenka d3 on u.id=d3.id and d3.fieldname='description' ale obecně to zapsat nejde, proto jsou lepší ta první řešení. |
||
Max258 Profil * |
#4 · Zasláno: 8. 10. 2010, 18:19:17
Nedala by sa vyuzit podla Vas funkcia group_concat?
|
||
Max258 Profil * |
#5 · Zasláno: 8. 10. 2010, 18:22:48
Kajman:
Poli to obsahuje viac, v neobmedzenom mnozstve podla uzivatela, kolko si ich prida. Ale premyslam ako to spojazdnit v jednom SQL prikaze, inak mi to prostredie neponuka prisposobit. |
||
Časová prodleva: 3 dny
|
|||
Kajman_ Profil * |
#6 · Zasláno: 11. 10. 2010, 09:20:32
Max258:
„Nedala by sa vyuzit podla Vas funkcia group_concat?“ To si musíte rozmyslet Vy, v jakém formátu chcete výstup. Pokud v jednom sloupečku chcete všechny informace za sebou, tak group_concat můžete použít. Osobně bych to ale tahkle nedělal. select u.*, group_concat(concat(d.fieldname,':',d.value)) info from uzivatelia u left join dovolenka d on u.id=d.id |
||
Časová prodleva: 15 let
|
0