ugrás a tartalomhoz

query duplikáció megszüntetése...

Termes · 2012. Már. 14. (Sze), 15.35
Sziasztok.

Listázási problémám van. A korábban segítséggel megoldott sql parancs használatakor kilistázza ugyanazt a felhasználót.

| a | b |
_____________
| aid | bid |
| nev | ido |
| stb | iks |
| stx | fel |


a | 1 | okoska | valami | valamix |
a | 2 | petike | valami | valamix |

b | 1 | 2012-12-15 | valami | 1 |
b | 2 | 2012-12-15 | valami | 2 |
b | 1 | 2012-12-12 | valami | 2 |
b | 1 | 2012-12-11 | valami | 2 |

sbt.

Erre használnám ezt a parancsot:
} if (ISSET($_GET['feltel'])){
	$data = mysql_query("SELECT * FROM a INNER JOIN b ON a.aid = b.bid WHERE fel = 2 ") or die(mysql_error());
Erre a lekérdezésre kapok 3 db nevet, amiből 2 ugyanaz.

1. okoska
2. okoska
3. petike

Ezt szeretném megoldani.
Köszönöm a segítséget!

Üdv:T
 
1

Miért baj?

Poetro · 2012. Már. 14. (Sze), 18.21
És miért baj, hogy kilistázza többször? Egyébként biztosan nem ezt a választ kapod, ugyanis a sorok különbözők lesznek, mivel jó eséllyel valamelyik oszlop különbözni fog a másiktól. Egyébként itt valami gubanc lesz valahol a leírásodban, ugyanis az a tábládban két sor van, amihez INNER JOIN-nal rakod hozzá a b táblát, ergo legfeljebb annyi sorod lehet, amennyi az a táblában van.
Egyébként a GROUP BY használatával lehet több sort "egyesíteni", azaz a GROUP BY-nak megadott oszlopok alapján kiválaszt egy sort, amiben a megadott mezők különböznek a többitől, de ez hozhat fura eredményeket is, mivel egyes eredménybeli sorok elvesznek.
2

Csak mert..

Termes · 2012. Már. 14. (Sze), 18.49
Csak, mert van egy törzsadatbázis, (a) és hozzá szolgáltatások (b) Szeretném kiválasztani azokat az embereket az (a) táblából, akik bizonyos szolgáltatásokat vettek igénybe (b).

Ezért nem jó, ha a listában többször szerepel ugyanaz az ember, mert több ezer sorosra duzzad a lista...

Lehet, hogy a szemléltetés nem tökéletes, de a lényeg a problémámban ez.

(a) tábla névsor egy sor -egy ember
(b) tábla szolgáltatások egy ember - több sor (dátum szerint)

Így, ahány rekorddal rendelkezik az egyén, annyiszor szerepel a lekérdezésben.
Azt szeretném, ha az adott személyt csak egyszer jelenítené meg, tehát ha a (b) táblában az adott feltételnek megfelel és létezik, akkor keresse meg az id szerint az (a) táblából, de ne duplikálja.

Ezt meg lehet oldani, vagy vakvágány?
3

Nem jó

Poetro · 2012. Már. 14. (Sze), 19.03
A fenti példában az emberekhez csatolod hozzá a tevékenységeket, így pontosan egyszer kellene hogy szerepeljen minden személy. Természetesen nem feltétlen azzal a tevékenységével, ami neked kell, hanem az egyikkel. Ha azt szeretnéd, hogy azzal a tevékenységgel szerepeljen akkor az INNER JOIN-nak kell megadni a megfelelő feltételt. Ha a lekérdezésben a tevékenységekhez csatolod hozzá a személyeket, akkor pedig használj GROUP BY-t a személyre, de ekkor pedig ne *-ot használj a kiválasztandó oszlopokhoz, mert az félrevezető lesz az eredmények tekintetében.
4

:)

Termes · 2012. Már. 14. (Sze), 19.06
Köszönöm. Megpróbálom.
5

Hihetetlen :)

Termes · 2012. Már. 14. (Sze), 19.29
Köszi Poetro!!

ORDER BY csere GROUP BY-ra és máris csak egyszer szerepel a tag a listán.

Köszi mégegyszer!

Üdv:T