Maik W. aus E.: mySQL: JOIN mit LIKE

Beitrag lesen

Tach auch Vinzenz,

Soweit so gut. In der neuen Version (nicht meine Tabelle) sind nun Referenzen auf mehrere Werte der br_rec_extended, durch Kommata getrennt, hinterlegt,

soweit, so schlecht. Mehr dazu unten.

so daß ein

SELECT bas.basisdaten_id, ex.cell_ref
FROM br_basisdaten bas, br_rec_extended ex
WHERE 1
AND bas.extended_ref like '%,ex.extended_id,%'

Was beabsichtigst Du da genau?
ex.extended_id wird hier als Zeichenkette genommen, nicht etwa durch einen Feldinhalt ersetzt. SQL ist kein Shellskript, Perl, PHP, ... mit Variablensubstitution.

Schade. Ich zögere vor der Arbeit der Normalisierung (also der br_extended_ref eine spalte "br_basisdaten_ref" mitzugeben und sie somit zur klassischen Kreuztabelle zu machen) und hoffte hintenrum durchs Knie drumrum zu kommen 8>)

Und selbst wenn es gehen würde, betrachte die Spezialfälle "Erster Eintrag" und "Letzter Eintrag".

Das lies sich abfangen, über concat habe ich jedem Wert vorne und hinten ein ',' mitgegeben.

Es dürfte keinen Eintrag mit genau diesem Text

<irgendwas>,ex.extended_id,<irgendwas anderes>

geben. Das ist mehr als wahrscheinlich.

Allerding. Ich war so blauäugig, auf <irgendwas>,Wert der ex.extended_id,<irgendwas anderes>
zu hoffen.

Meine Versuche mit JOIN

[code lang=sql]
SELECT bas.basisdaten_id, ex.cell_ref
FROM br_basisdaten bas, br_rec_extended ex
INNER JOIN br_basisdaten ON bas.extended_ref = ex.extended_id
WHERE ex.cell_ref = '$cell'


> >   
> > brachten auch keine Ergebnisse, dauerten aber viel länger...  
>   
> Kein Wunder. Du hast da ein Kreuzprodukt drin. Beinahe wäre es das gleiche wie Deine erste Abfrage.  
>   
> > Hat jemand eine Idee, wie man das zusammenbringen kann?  
>   
> Bitte lies [meine Ausführungen zu JOIN](/archiv/2005/8/t113001/#m716818).  

Hatte ich. Deswegen auch meine zugegeben -etwas dilletantischen-Versuche mit Join. Ich fand keine Syntax mit Like und hoffte auf einen Tip á la IN oder so...  
Dann schnappe Dir die Person, die die neue Version verbrochen hat. Sowas gehört sich nicht.  
  
Ich weiß, hoffte aber...siehe oben  

>   
> > Soweit so gut. In der neuen Version (nicht meine Tabelle) sind nun Referenzen auf mehrere Werte der br\_rec\_extended, durch Kommata getrennt, hinterlegt  
>   
> Das ist ein elementarer Verstoß gegen die Normalisierungsprinzipien bei relationalen Datenbanken, [erste Normalform](http://www.sql-und-xml.de/sql-tutorial/erste-normalform-datentypen.html):  
>   
>     "Alle Daten liegen atomar vor"  
>   
> Mir fällt nichts ein, was das Abweichen von diesem simplen und einfachen Grundprinzip wünschenswert erscheinen lässt. Beseitige diesen nicht wünschenswerten Zustand und Dein Problem erledigt sich von selbst.  
  
O.K. muß ich wohl, wenn kein Weg daran vorbeiführt  
  
Danke und  
<http://www.gruss-aus-essen.de>  
  
Maik