[MySQL] Nur eine Trefferzeile pro Gruppe?

[MySQL] Nur eine Trefferzeile pro Gruppe?

am 21.02.2006 00:16:08 von Sebastian Suchanek

Hallo NG!

Ich stehe gerade etwas auf dem Schlauch, ich hoffe, Ihr könnt
mir helfen: Ausgangspunkt ist eine MySQL-Datenbank mit
mehreren Tabellen: "strips" ist sozusagen die Hauptdatenbank,
"speaches" enthält üblicherweise mehrere Einträge, die zu
einem Eintrag in "strips" gehören. Die Abfrage sieht
entsprechend so aus:

| SELECT * FROM strips LEFT JOIN speach ON speach.strip = strips.id

Funktioniert prinzipiell, allerdings hätte ich gerne pro
strips-Eintrag auch nur einen Eintrag in der Ergebnistabelle.
(Die Tabelle wird ohnehin nur ein oder zwei Felder aus
"strips" enthalten, "speaches" wird nur eingebunden, um darin
zu suchen.)
Wie lässt sich das bewerkstelligen?


TIA,

Sebastian

PS: Ich weiß, daß "SELECT *" böse ist - das dient nur zur
Abkürzung hier im Posting.

--
http://www.baumaschinen-modelle.net
http://www.schwerlast-rhein-main.de

Re: [MySQL] Nur eine Trefferzeile pro Gruppe?

am 21.02.2006 09:31:40 von Fabian Schladitz

Sebastian Suchanek schrieb:
> Ich stehe gerade etwas auf dem Schlauch, ich hoffe, Ihr könnt
> mir helfen: Ausgangspunkt ist eine MySQL-Datenbank mit
> mehreren Tabellen: "strips" ist sozusagen die Hauptdatenbank,
> "speaches" enthält üblicherweise mehrere Einträge, die zu
> einem Eintrag in "strips" gehören. Die Abfrage sieht
> entsprechend so aus:
>=20
> | SELECT * FROM strips LEFT JOIN speach ON speach.strip =3D strips.id
>=20
> Funktioniert prinzipiell, allerdings hätte ich gerne pro
> strips-Eintrag auch nur einen Eintrag in der Ergebnistabelle.

Und welchen?


> (Die Tabelle wird ohnehin nur ein oder zwei Felder aus
> "strips" enthalten, "speaches" wird nur eingebunden, um darin
> zu suchen.)

Häh? Du machst einen JOIN ohne weitere Parameter im WHERE-Clause. Wie=20
suchst du denn und was?

> Wie lässt sich das bewerkstelligen?

In dem du kurz erklärst, was du eigentlich willst. Wozu der JOIN, wenn =

du doch nur die Sachen aus "strip"s willst? Wie suchst du in den=20
"speach"es? Und welche MySQL-Version hast du?

--=20
HTH,
Fabian

Re: [MySQL] Nur eine Trefferzeile pro Gruppe?

am 21.02.2006 15:37:30 von Sebastian Suchanek

Fabian Schladitz spoke thusly:
> Sebastian Suchanek schrieb:
>
>> Ich stehe gerade etwas auf dem Schlauch, ich hoffe, Ihr
>> könnt mir helfen: Ausgangspunkt ist eine MySQL-Datenbank
>> mit mehreren Tabellen: "strips" ist sozusagen die
>> Hauptdatenbank, "speaches" enthält üblicherweise mehrere
>> Einträge, die zu einem Eintrag in "strips" gehören. Die
>> Abfrage sieht entsprechend so aus:
>>
>> | SELECT * FROM strips LEFT JOIN speach ON speach.strip =
>> | strips.id
>>
>> Funktioniert prinzipiell, allerdings hätte ich gerne pro
>> strips-Eintrag auch nur einen Eintrag in der
>> Ergebnistabelle.
>
> Und welchen?

Ich hatte an "strips.id" und "strips.date" gedacht.

>> (Die Tabelle wird ohnehin nur ein oder zwei Felder aus
>> "strips" enthalten, "speaches" wird nur eingebunden, um
>> darin zu suchen.)
>
> Häh? Du machst einen JOIN ohne weitere Parameter im
> WHERE-Clause. Wie suchst du denn und was?

Das, was von Fall zu Fall durch Usereingaben festgelegt wird.
Die obige Zeile dient nur zu Test- und Demonstrationszwecken,
ist auf den relevanten Teil gekürzt und daher mitnichten die
volle DB-Abfrage.

>> Wie lässt sich das bewerkstelligen?
>
> In dem du kurz erklärst, was du eigentlich willst.

Vereinfacht gesagt eine Stichwortsuche.

> Wozu der
> JOIN, wenn du doch nur die Sachen aus "strip"s willst?

Weil die Texte, in denen sich die zu suchenden Stichworte
befinden, in der Tabelle "speaches" stehen. Die Ergebnismenge
aus "strips" wird später zur weiteren Verarbeitung in PHP
verwendet werden.

> Wie suchst du in den "speach"es?

"[...] WHERE speaches.speach LIKE '%$keyword%'" z.B.

> Und welche MySQL-Version hast du?

4.0.24_Debian-10sarge1-log


Tschüs,

Sebastian

--
http://www.baumaschinen-modelle.net
http://www.schwerlast-rhein-main.de

Re: [MySQL] Nur eine Trefferzeile pro Gruppe?

am 21.02.2006 15:45:18 von Holger Pollmann

Sebastian Suchanek schrieb:

> Weil die Texte, in denen sich die zu suchenden Stichworte
> befinden, in der Tabelle "speaches" stehen.

Ohne jetzt ketzerisch wirken zu wollen, aber kann es sein, daß du da einen
Schreibfehler permanent durchziehst? "speach" kenne ich nicht, wohl aber
den englischen Begriff "speech"...

--
( ROT-13 if you want to email me directly: uvuc@ervzjrexre.qr )
"Sie tragen Trauer? Der Untergang der DDR?" - "Nein, Leni Riefenstahl. Der
Führer hat sie zu sich genommen." -- Abschiedsshow Scheibenwischer,
02.10.2003

Re: [MySQL] Nur eine Trefferzeile pro Gruppe?

am 21.02.2006 18:34:52 von Helmut Chang

Sebastian Suchanek schrieb:

> | SELECT * FROM strips LEFT JOIN speach ON speach.strip = strips.id
>
> Funktioniert prinzipiell, allerdings hätte ich gerne pro
> strips-Eintrag auch nur einen Eintrag in der Ergebnistabelle.
....
> PS: Ich weiß, daß "SELECT *" böse ist - das dient nur zur
> Abkürzung hier im Posting.

Und verhindert in deinem Fall genau das gewünschte.

Stichwort für Lektüre in der MySQL-Doku ist DISTINCT.

gruss, heli

Re: [MySQL] Nur eine Trefferzeile pro Gruppe?

am 21.02.2006 21:59:18 von Sebastian Suchanek

Holger Pollmann spoke thusly:

> [...]
> Ohne jetzt ketzerisch wirken zu wollen, aber kann es sein,
> daß du da einen Schreibfehler permanent durchziehst?
> [...]

Öhm, ja. Jetzt wo Du's sagst... :-)


Tschüs,

Se-"peinlich"-bastian

--
http://www.baumaschinen-modelle.net
http://www.schwerlast-rhein-main.de