MrSpoocy: Verhalten von "IN" in WHERE klausel / LEFT JOIN auch bei NULL ?

Beitrag lesen

Ich zeige dir hier mal die Sturtur:

Tabelle "Item"

Item
iID | Name

Tabelle "Erweiterung"

eID | Name

Tabelle "Cross"

id | iID | eID1 | | eID2 | eID3 | eID4

Was ganau soll passieren ?
In der Cross tabelle sind die bis jetzt verfügbaren combinationen von Item & Erweiterung. Der user sucht nach "VW Max" nun setzte ich das ganze mit hilfe der vielen LEFT JOIN zusammen:

SELECT * FROM Cross AS T1
LEFT JOIN Erweiterung AS T2 ON T2.eID=T1.eID1
LEFT JOIN Erweiterung AS T3 ON T3.eID=T1.eID2
LEFT JOIN Erweiterung AS T4 ON T4.eID=T1.eID3
LEFT JOIN Erweiterung AS T5 ON T5.eID=T1.eID4
WHERE CONCAT_WS(' ',T1.Name,T2.Name,T3.Name,T4.Name,T5.Name) LIKE '%VW%Max%'

so ... nun wird das ganze aber schwerer, wenn nun z.b. eine erweiterung doppelt vorkommt bei 1nem Corss eintrag (ist absichtlich der fall das dieses möglich ist) dann würde das ergebniss nicht mehr "VW Max Max" sondern "WV Double Max" heißen und er muss dann auch danach suchen können. Also wenn der user "WV Dou Ma" eingibt muss er den eintrag finden.

Habe mir group_concat mal angeschaut und das sieht sehr vielversprechend aus, jedoch seh ich da keine möglichkeit mit dem "Double",  Triple, Quad. Man kann zwar in der gleichen abfrage ein COUNT einbauen und bekommt die anzahl, aber ich habe bis jetzt keine möglichkeit gefunden das dann irgendwie vor den group_concat string zu setzen.

Also sowas hier z.b.

SELECT GROUP_CONCAT(DISTINCT ELT(COUNT(Erweiterung ),'','Double ','Triple ','Quad '),Erweiterung SEPARATOR ' ') FROM ....

problem dabei macht das COUNT(Erweiterung), wenn ich anstelle dessen einfach mal eine zahl von 1-4 einsetze gibt er schon mal das richtige aus.

Ich würde mich über antwort von dir freuen oder vieleicht auch MSN kontakt dann kann ich die auch die genauen strukturen der Db zeigen.

mfg Spoocy