UPDATE: Köszönöm szépen a segítséget mindenkinek, sikerült megoldani!
Sziasztok!
Van nekem egy ilyenem:
SELECT * FROM ceg LEFT JOIN cegelerh ON ceg.id=cegelerh.ceg_id AND cegelerh.megye_id=$_GET[megye] WHERE ceg.nev LIKE '%$_GET[s_ceg_neve]%' AND ceg.$_GET[kat] = 1 GROUP BY cegelerh.megye_id ORDER BY ceg.nev LIMIT $tol, 10
A bajom a GROUP BY. Ugye az lenne a lényeg, hogy minden cégnél, ahol több elérhetőség is van, ott csak 1 darabot listázzon ki. Az a baj, hogy a GROUP BY kiszűri azokat a találatokat is, amik másik céghez tartoznak, de ugyanabban a megyében vannak, így a találati lista nem ad vissza korrekt eredményt.
Hogy adom meg a GROUP BY-nak hogy csak akkor szűrjön, ha azonos ceg.id van? Esetleg milyen workaround van rá?
(Nézegettem az allekérdezéseket is, hogy hátha az a megoldás, de az még nem nagyon tiszta nekem).
- 1385 megtekintés
Hozzászólások
Szerintem ez al-select lesz. De könnyebb lenne ha a táblaszerkezet is látható lenne. Kezdd el, és szólj hogy mi nem megy.
Mellékesen úgy látom hogy ez valamilyen webes alkalmazás alá dolgozik, gondolom PHP. _Soha_ ne használj alkalmazás select-jeiben
select *
-ot!
select *
csak közvetlenül query-ben használatos ha keresünk valamit.
Ne légy rest, ha 200 mező van a táblában akkor írd ki a kétszáz mező nevét a kis kezeddel. :)
Ugyanis ha később bővítened kell a táblát, vagy ami rosszabb ki kell venni valamilyen mezőt, akkor nyálazhatod heteken át a PHP kódodat.
Másrészt meg ezért nem dolgozik a GROUP BY sem rendesen...
---
"A megoldásra kell koncentrálni nem a problémára."
- A hozzászóláshoz be kell jelentkezni
Megfogadom, köszönöm :)
- A hozzászóláshoz be kell jelentkezni
Szervusz !
Ez esetben csatlakoznék az előttem szólóhoz, itt szükséges felsorolni a mezőneveket.
SELECT DISTINCT ceg.id ... vs ez lesz a te barátod;
sajna betegség miatt használhatatlan vagyok :-(
CSZ
- A hozzászóláshoz be kell jelentkezni
Szia, egy subselect-tel meg tudod oldani.
Javaslatom még annyi, hogy a SELECT-bből a $_GET[''] dolgokat szedd ki. Ha ugyanis nem az érkezik amit vársz, kellemetlen meglepetésekben lehet részed. (SQL injection)
--
Ami elől menekülnek, az után szaladnak.
- A hozzászóláshoz be kell jelentkezni
Kiszedtem!
- A hozzászóláshoz be kell jelentkezni
ne csak a megyere group by-olj, hanem a cegid-ra is.
GROUP BY ceg.id, cegelerh.megye
igy csak az azonos cegeken belul fog megye szerint csoportositani.
Tyrael
- A hozzászóláshoz be kell jelentkezni
Ez volt az! Köszönöm!
- A hozzászóláshoz be kell jelentkezni