Problem mit SQL Abfrage

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem mit SQL Abfrage

    Hi, ich hab ein kleines Problem mit einer DB Abfrage wo ich einfach nicht weiter komm.

    Ich hab mehrere Seiten die alle eine ID haben, auf den Seiten soll unterschiedlicher Inhalt aus einer DB eingeblendet werden. In der Datenbank hab ich jetzt eine Spalte mit allen IDs durch Komma getrent wo der Inhalt angezeigt werden soll. Beim auslesen wird aber der Inhalt nur auf der Seite mit der ersten ID angezeigt, wenn ich also "1,2,3" eintrage wird der Inhalt nur auf Seite 1 angezeigt.

    Quellcode

    1. SELECT * FROM tabelle WHERE $id IN (show_pages)


    Jemand ne Idee wo mein Denkfehler liegt oder wie ich das hinbekommen kann?
  • Hi, wie ist denn deine Datenbank aufgebaut?
    Meinst du nicht, du kommst mit einem JOIN, wenn du Einschränkungen haben willst und mit einem GROUP_CONCAT, wenn du eine komma-seperierte Liste haben willst, besser klar?
    IDs (womöglich Fremdschlüssel) in einer Liste zu halten sieht nicht gut aus.


    Wenn du bei deiner ursprünglichen Lösung bleiben willst, fällt mir nur ein Experiment ein...
    Vielleicht mag MySQL den Typ "Spalte" nicht und fordert einen String.

    Quellcode

    1. SELECT * FROM tabelle WHERE $id IN (CAST(show_pages AS CHAR));
  • Ich schließ mich an: Du verletzt die Normalform und bekommst Probleme beim Ändern der Datensätze (auslesen, ändern, zurückschreiben ist langsamer als gleich löschen). Mach für jede ID-Seiten-Verknüpfung einen neuen Eintrag in einer dafür angelegten Tabelle und du bekommst weniger Probleme. Außerdem sind "Volltextsuchen" langsamer als nach einer indizierten Zahl.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]