Jetzt Mitglied werden
Kostenlos registrieren und die vielen Vorteile der Webmasterpro-Mitgliedschaft nutzen.
Forum - Entwicklung
- Markup (HTML, XML, etc.) und CSS
- Skriptsprachen (PHP, Javascript, etc.)
- Datenbanken (SQL)
- CMS und Frameworks
- Flash und ActionScript
Info: Der Stern signalisiert, dass neue Beiträge vorhanden sind.
Alle Foren - Übersicht
Portal aktuelle Themen
Design aktuelle Themen
Server aktuelle Themen
- Webhosting und Webspace
- Betriebssysteme (Windows, Linux, etc.)
- Serveradministration
- Überwachung, Sicherheit und Backups
Management aktuelle Themen
Über Webmasterpro.de
Das Portal wird betrieben und entwickelt durch die Team23 Agentur. Die Augsbuger Agentur hat sich auf Community Software und die Entwicklung von Webportalen spezialisiert.
Datenbanken (SQL) - Forum
Derzeit sind Sie als Gast in unserem Forum aktiv. Für das Schreiben registrieren Sie sich bitte. Unser Forum ist eine Austauschplattform für Webworker zum Kommunizieren, Helfen, Informieren und Hilfe finden. Auf der rechten Seiten finden Sie eine Forenübersicht über alle Bereiche des Webmaster-Forums. Unterhalb finden Sie alle aktuellen Themen.
MySQL :: ... WHERE '1' IN (`field`) ...
Guten Morgen zusammen,
ich stehe aktuell vor einem kleinen Rätsel.
In einer Datenbanktabelle habe ich eine Spalte in der id's anderer Datenbankeinträge mit Kommata separiert aufgelistet sind (z.B. 1,5,96).
In 99% der Fälle ist dieses Konstrukt auch genau dieses welches perfekt ist z.B: für explode etc.
Allerdings habe ich nun ausnahmsweise den genau umgekehrten Fall, dass ich eine ID weiß und alle Einträge der Tabelle brauche, wo diese ID in der Liste vorkommt.
Das WHERE '1' IN (`field`) funktioniert allerdings nicht.
Alternativ hätte ich auch diese Variante ...
1 | SELECT * FROM `table` WHERE CONCAT(',', `field`, ',') LIKE '%,1,%'
|
... die das Problem in gewisser Hinsicht löst, ich diese jedoch sehr unschön finde.
Hat jemand eine Idee wie ich das ganze ans laufen bekommen kann?
Das ganze sollte Schlussendlich eigtl. so aussehen bzw. nach dieser Logik funktionieren:
1
2
3
4
5
6 | SELECT t1.*
FROM `module_event` AS t1
INNER JOIN `module_event_tag` AS t2
ON t2.`id` IN (t1.`_friendof_module_event_tag`)
WHERE t2.`identifier` = 'rock';
|
Viele Grüße und Frohes Neues nachträglich von meiner Seite,
Dominik
Hat jemand eine Idee wie ich das ganze ans laufen bekommen kann?
Ja - normalisiere deine Daten ordentlich und lagere die IDs in eine extra Tabelle aus, mit allem anderen wirst du auf Dauer nicht glücklich werden. Und wenn du unbedingt in der Ausgabe deine mit Komma verketteten IDs haben möchtest, solltest du die mit GROUP_CONCAT wieder zusammenkleben können.
btw: hat es einen tieferen Sinn dass du bei allen Tabellen- und Spaltennamen Backticks verwendest auch wenn es garnicht notwendig wäre?
Gruß,
Tobias
Hat jemand eine Idee wie ich das ganze ans laufen bekommen kann?
Ja - normalisiere deine Daten ordentlich und lagere die IDs in eine extra Tabelle aus, mit allem anderen wirst du auf Dauer nicht glücklich werden. Und wenn du unbedingt in der Ausgabe deine mit Komma verketteten IDs haben möchtest, solltest du die mit GROUP_CONCAT wieder zusammenkleben können.
btw: hat es einen tieferen Sinn dass du bei allen Tabellen- und Spaltennamen Backticks verwendest auch wenn es garnicht notwendig wäre?
Gruß,
Tobias
Eben genau auf eine Zusatztabelle möchte ich schon gerne verzichten - werde aber vermtl. wohl doch nicht drumherum kommen - falls es nicht doch eine geeignete Lösung gibt.
Das ich die Verwende ist einfach eine Sache der Gewöhnung ;-)
