Schleife nur x-mal ausführen?

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

  • #16
    in $zid sind die zutaten die du hast
    und du suchst nach cocktails, die keine anderen zutaten enthalten?
    dann brauchen wir eine doppelte Verneinung:

    deine Query:
    Code:
    select DISTINCT cocktail.name,mix.cid,cocktail.alk
    from cocktail,mix,zutat
    where zutat.zid IN $ids and mix.zid=zutat.zid and mix.cid=cocktail.cid
    vorweg die Query vereinfachen - die Zutaten brauchen wir nicht, da im mix die zutat-id schon enthalten ist:
    Code:
    select DISTINCT cocktail.name,mix.cid,cocktail.alk
    from cocktail,mix
    where mix.zid IN $ids and mix.cid=cocktail.cid
    erste Verneinung - Suche nach allen nicht vorhandenen Zutaten:
    Code:
    select DISTINCT cocktail.name,mix.cid,cocktail.alk
    from cocktail
    left join mix mix.cid=cocktail.cid and mix.zid [b]not[/b] IN $ids
    zweite Verneinung - Einchränkung auf Cocktails, die diese Zutaten nicht enthalten:
    Code:
    ...
    group by mix.cid
    having count(mix.zid)[b]=0[/b]
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #17
      Vielen Dank erstmals!

      hab nun diese Abfrage:
      PHP-Code:
      $result mysql_query("select DISTINCT cocktail.name,mix.cid,cocktail.alk from cocktail left join mix mix.cid=cocktail.cid and mix.zid not IN $ids group by mix.cid  having count(mix.zid)=0") or die(mysql_error()) ; 
      bekomme aber nun diese Fehlermeldung:
      [quote]
      You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '.cid=cocktail.cid and mix.zid not IN (13,22) group by mix.cid
      [/qoute]


      Kommentar


      • #18
        LEFT JOIN ON wäre nett und
        mix.zid not IN ($ids)
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #19
          richtig: left join mix mix.cid=...
          aber @Pie: die Klammern sind in $ids schon drin

          @whistler: lass die Zeilenumbrüche ruhig drin.
          Die machen die ganze Sache übersichtlicher
          und funktionieren tut´s trotzdem
          (wenn die query korrekt ist)
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #20
            mein Code funkt nicht wirklich ...

            PHP-Code:
            <?php
            include("config.php");
            $ids='('.implode(','$zid).')';
            $result mysql_query("select DISTINCT cocktail.name,mix.cid,cocktail.alk from cocktail left join mix mix.cid=cocktail.cid and mix.zid not IN $ids group by mix.cid having count(mix.zid)=0") or die(mysql_error()) ;
            while (
            $row mysql_fetch_array($result)){
                    echo(
                        
            "<a href='show.php?id=$row[cid]&$row[name]'>$row[name]</a>"
                                
            );
                    echo 
            "<br>";
                }

                
            ?>
            Fehlermeldung:

            You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '.cid=cocktail.cid and mix.zid not IN (10) group by mix.cid havi
            habe die aktuelleste MySQL Version laufen...

            Kommentar


            • #21
              Code:
              FROM tabelle1 LEFT JOIN tabelle2 [b][size=4]ON[/size][/b] bedingung
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #22
                Original geschrieben von Titus
                richtig: left join mix mix.cid=...
                aber @Pie: die Klammern sind in $ids schon drin

                Joa $ids hab ich nicht gesehen bzw nicht den ganzen code gelesen...
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #23
                  Original geschrieben von Titus
                  richtig: left join mix mix.cid=...
                  Dafür hab ich vergessen, nach dem Copy&Paste das on einzufügen ... jedem sein eigener Lieblingsfehler.

                  ganz richtig (wie auch schon von Mello und happi gepostet):
                  left join mix on mix.cid=...
                  mein Sport: mein Frühstück: meine Arbeit:

                  Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                  Kommentar

                  Lädt...
                  X