Vinzenz Mai: mySQL: JOIN mit LIKE

Beitrag lesen

Hallo Maik,

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.
Und selbst wenn es gehen würde, betrachte die Spezialfälle "Erster Eintrag" und "Letzter Eintrag".

funktionieren könnte. Das macht es aber nicht, mySQL gibt keine Fehlermeldung, aber auch keine Ergebnisse aus.

Es dürfte keinen Eintrag mit genau diesem Text

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

geben. Das ist mehr als wahrscheinlich.

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). Dann schnappe Dir die Person, die die neue Version verbrochen hat. Sowas gehört sich nicht.  
  

> 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.  
  
  
Freundliche Grüße  
  
Vinzenz