query problem mit mehrfachen ergebnissen

query problem mit mehrfachen ergebnissen

am 08.04.2006 18:08:47 von Aleksandra

Hallo zusammen,

ich hab da ein kleines Problem mit einem Query welches in mysql 4.0.18 mir
mehrfache ergebnisse liefert.

Hier das stmt:
select sh.query, sc.name
from
search_help AS sh,
search_help_cat AS shc,
de_cat_sub AS sc
where
query like 'te%'
AND sh.ID = shc.query_id
AND shc.cat_id = sc.ID

Problem ist, daß es nun zu einem eintrag in search_help mehrere in
search_help_cat gibt. Z.b. gibt es zu test 2 Kategorien.
Also liefert dieses stmt:
test, cat1
test, cat2
Ich möchte aber nur das erste angezeigt bekommen. Also:
test, cat1

Versucht habe ich es bereits mit Distinct aber das hat leider nichts genutzt.

Hat jemand einen guten tipp wie ich hier weiterkomme?

Vielen Dank im vorraus,

Merlin

Re: query problem mit mehrfachen ergebnissen

am 08.04.2006 18:56:07 von Johannes Vogel

Hi Merlin

Merlin wrote:
^-- Wir mögen hier vollständige Realnamen.
> ich hab da ein kleines Problem mit einem Query welches in mysql 4.0.18 mir
> mehrfache ergebnisse liefert.
> Hier das stmt:
> select sh.query, sc.name
> from
> search_help AS sh,
> search_help_cat AS shc,
> de_cat_sub AS sc
> where
> query like 'te%'
> AND sh.ID = shc.query_id
> AND shc.cat_id = sc.ID

> Problem ist, daß es nun zu einem eintrag in search_help mehrere in
> search_help_cat gibt. Z.b. gibt es zu test 2 Kategorien.
> Also liefert dieses stmt:
> test, cat1
> test, cat2
> Ich möchte aber nur das erste angezeigt bekommen. Also:
> test, cat1
> Versucht habe ich es bereits mit Distinct aber das hat leider nichts
> genutzt.
> Hat jemand einen guten tipp wie ich hier weiterkomme?

distinct ist eigentlich nur ein GROUP BY. Ein solches kannst du hier
einsetzen:
select sh.query, sc.name
from search_help sh
join search_help_cat shc on sh.id=shc.query_id
join de_cat_sub sc on shc.cat_id = sc.id
where query like 'te%'
group by sh.query;

oder aber über distinct:
select distinct(sh.query), sc.name
from search_help sh
join search_help_cat shc on sh.id=shc.query_id
join de_cat_sub sc on shc.cat_id = sc.id
where query like 'te%';

Merkwürdig finde ich aber, dass dein sh.query mehreren subkategorien
zugeordnet sein kann. Du solltest nachgehen, woher das kommt und wie du
das in der Datenbasis u.U. rausbringen kannst. Ausserdem: Welche
Kategorie willst du dabei rausgeben? Die erste oder eine mittlere oder
die letzte?

HTH, Johannes

Re: query problem mit mehrfachen ergebnissen

am 08.04.2006 19:18:04 von Aleksandra

Johannes Vogel schrieb:
> Hi Merlin
>
> Merlin wrote:
> ^-- Wir mögen hier vollständige Realnamen.
>> ich hab da ein kleines Problem mit einem Query welches in mysql 4.0.18 mir
>> mehrfache ergebnisse liefert.
>> Hier das stmt:
>> select sh.query, sc.name
>> from
>> search_help AS sh,
>> search_help_cat AS shc,
>> de_cat_sub AS sc
>> where
>> query like 'te%'
>> AND sh.ID = shc.query_id
>> AND shc.cat_id = sc.ID
>
>> Problem ist, daß es nun zu einem eintrag in search_help mehrere in
>> search_help_cat gibt. Z.b. gibt es zu test 2 Kategorien.
>> Also liefert dieses stmt:
>> test, cat1
>> test, cat2
>> Ich möchte aber nur das erste angezeigt bekommen. Also:
>> test, cat1
>> Versucht habe ich es bereits mit Distinct aber das hat leider nichts
>> genutzt.
>> Hat jemand einen guten tipp wie ich hier weiterkomme?
>
> distinct ist eigentlich nur ein GROUP BY. Ein solches kannst du hier
> einsetzen:
> select sh.query, sc.name
> from search_help sh
> join search_help_cat shc on sh.id=shc.query_id
> join de_cat_sub sc on shc.cat_id = sc.id
> where query like 'te%'
> group by sh.query;
>
> oder aber über distinct:
> select distinct(sh.query), sc.name
> from search_help sh
> join search_help_cat shc on sh.id=shc.query_id
> join de_cat_sub sc on shc.cat_id = sc.id
> where query like 'te%';
>
> Merkwürdig finde ich aber, dass dein sh.query mehreren subkategorien
> zugeordnet sein kann. Du solltest nachgehen, woher das kommt und wie du
> das in der Datenbasis u.U. rausbringen kannst. Ausserdem: Welche
> Kategorie willst du dabei rausgeben? Die erste oder eine mittlere oder
> die letzte?
>
> HTH, Johannes
Hi Johannes,

vielen Dank, daß mit group by funktioniert tadellos.
Mehrere Kategorien habe ich deshalb weil ich dieselbe Tabelle für
unterschiedliche Funktionen benutzte. Von daher geht das in Ordnung.

Vielen Dank für die Hilfe,

Merlin