Select, Group by und Where like

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Select, Group by und Where like

    Hallo,

    hat einer eine Ahnung von euch warum das nicht funktioniert ?

    SELECT kategorie.id, kategorie.kategorie_name, count( film.id ) AS anzahl
    FROM kategorie, film
    WHERE film.film_kategorie LIKE '%' + kategorie.id + ';%'
    GROUP BY kategorie.id
    ORDER BY kategorie.id ASC

    in film.film_kategorie habe ich die ids aus kategorie mit ; als trenner gespeichert, also z.b. : 1;3;5

    Er gibt mir als Anzahl aber immer 15 zurück was der kompletten Anzahl der Filme entspricht.

    Irgendwelche Ideen ?

  • #2
    in film.film_kategorie habe ich die ids aus kategorie mit ; als trenner gespeichert, also z.b. : 1;3;5
    Diese würde ich aber mit Kommas trennen und dann mit IN() prüfen ob kategorie.id drin enthalten ist.
    PHP-Code:
    $sql '...WHERE kategorie.id IN(film.film_kategorie)...'
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Gibt es nicht die Möglichkeit das auch mit ; mit IN() zu prüfen denn da hängt mitlerweile eine ganze Menge Scripte dahinter die geändert werden müssten....

      Kommentar


      • #4
        Diese würde ich aber mit Kommas trennen und dann mit IN() prüfen ob kategorie.id drin enthalten ist.
        $sql '...WHERE kategorie.id IN(film.film_kategorie)...';
        Geht das? Oder müsste das nicht eher IN_SET sein können.

        Falls es geht, dann
        Gibt es nicht die Möglichkeit das auch mit ; mit IN() zu prüfen denn da hängt mitlerweile eine ganze Menge Scripte dahinter die geändert werden müssten....
        müsstest du mal gucken, ob man den Trenner irgendwo einstellen kann.

        Letztendlich hat man hier natürlich wiedermal das DB-Layout total verbaselt. Normalisiere anständig, dann kannst du auch nen "schönen" JOIN gestalten.

        Kommentar


        • #5
          OffTopic:
          Aus deutscher Sicht ist verbaseln ist schlimmer als verwienern.

          Kommentar


          • #6
            WHERE kategorie.id IN(replace(film.film_kategorie, ';', ','))

            sollte funktionieren...
            signed oder unsigned... das ist hier die Frage

            Kommentar


            • #7
              Aus deutscher Sicht ist verbaseln ist schlimmer als verwienern.
              OffTopic:

              Spüre ich hier eine feindeslige Einstellung der Schweiz gegenüber? Vergiss nicht wir sind die Herrscher über euer Kapital (zusammen mit Lichtenstein). Also schön brav sonst geht eine Meldung an dein zuständiges Finanzamt heraus

              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar

              Lädt...
              X