alle cocktails zeigen, be denen man die zutaten xy braucht

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

  • #16
    danke für den hinweis auf meine dummheit. aber leider kann ich ohne erklärung oder zumindest tips nichts damit anfangen

    Kommentar


    • #17
      tabelle cocktails
      tabelle zutaten
      tabelle cocktails_zutaten

      select * from cocktails c
      inner join cocktails_zutaten cz ...
      inner join zutaten z....
      where z.zutat = 'wasser'

      usw.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #18
        aber das hilft nur bedingt (wasser wird wohl überall drin sein *g*)

        gesucht is ne abfrage, die alle cocktails raussucht, die mit den angegebenen zutaten gemixt werden können.
        es darf kein cocktail ausgegeben werden, der auch nur eine einzige zutat mehr braucht

        du müsstest dir praktisch alle cocktails auslesen lassen, die du nicht mixen kannst mit den gegebenen zutaten und das dann invertieren
        => 2 abfragen
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #19
          Original geschrieben von mrhappiness
          aber das hilft nur bedingt (wasser wird wohl überall drin sein *g*)
          war ja auch nur ein beispiel.

          Original geschrieben von mrhappiness
          gesucht is ne abfrage, die alle cocktails raussucht, die mit den angegebenen zutaten gemixt werden können.
          aso. das hatte ich vorhin nicht gelesen. ich habe einfach mittendrin angefangen zu lesen...

          Original geschrieben von mrhappiness
          es darf kein cocktail ausgegeben werden, der auch nur eine einzige zutat mehr braucht
          verstehe.

          Original geschrieben von mrhappiness
          du müsstest dir praktisch alle cocktails auslesen lassen, die du nicht mixen kannst mit den gegebenen zutaten und das dann invertieren
          => 2 abfragen
          das muss auch mit nur einer abfrage gehen....

          noch 2 joins mehr würde ich sagen, und es könnte klappen...

          aber für solche fälle haben wir ja TBT. ich habe jetzt keine lust mehr ....
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #20
            nagut, dann bring ich mal eine Lösung!

            die Tabelle "Cocktails" (stark vereinfacht)

            cocktail
            ============
            c_id
            name (name des cocktails)
            soll (anzahl der zutaten)

            zutaten
            ==========
            z_id
            name


            cocktail_zutaten
            =============
            c_id
            z_id


            Abfrage
            Code:
            select c.name
            	count(distinct(z.z_id)) anzahl,
            	c.soll
            from cocktail c
            inner join cocktail_zutaten cz
            	on ( c.c_id = cz.c_id )
            inner join zutaten z
            	on ( cz.z_id = z.z_id )
            where z.name in ('zutat1','zutat2', ... )
            und dann per PHP nur die anzeigen, wo anzahl==soll ist,
            das sind dann die, wo alle zutaten vorhanden sind
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #21
              wow!
              cool, danke @ tbt

              aber was bedeutet das mit dem: select c.name, from cocktail c, inner join zutaten z usw..
              ich versteh das mit dem c und mit dem z nich
              wenn mir das noch jemand erklären könnte, dann passt alles

              ich mache ungern sachen, die ich nicht verstehe

              Kommentar


              • #22
                das sind aliase, damit man nicht immer den tabnamen tippen muss.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #23
                  Code:
                  select c.Name
                  count(distinct(z.ID)) anzahl,
                  c.soll
                  from Cocktails c
                  inner join CocktailsToZutaten cz
                  on ( c.ID = cz.CocktailID )
                  inner join Zutaten z
                  on ( cz.ZutatenID = z.ID )
                  where z.ZutatName in (".$zutaten.")";

                  hmm.. der query funktioniert irgendwie nich..
                  tabellen namen und so hab ich alles angepasst.. in $zutaten sind alle zutaten in dieser form: 'zutat1id', 'zutat2id', usw gespeichert

                  wenn ich das script aufrufe, dann kommt folgende fehlermeldung:
                  Fehler in der Syntax bei 'count(distinct(z.ID)) anzahl, c.soll from Cocktails c inner j' in Zeile 2.

                  hab mir jetzt zahlreiche seiten zu joins angeschaut, steig aber immer noch nich ganz durch.. deswegen finde ich auch selber den fehler nich

                  mfg
                  whizzler

                  Kommentar


                  • #24
                    setz mal ein "," hinter c.Name
                    Kissolino.com

                    Kommentar


                    • #25
                      DANKE!

                      großes danke nochmal an tbt!
                      ich musste bei dem query noch n bissl was ändern, aber es funzt jetzt alles. geil!
                      ich versteh jetzt joins n bissl und hab nebenbei auch noch mein script (fast) fertig geschrieben!

                      ich musste am ende des querys noch ein GROUP BY c.Name einfügen. dann is alles gelaufen.

                      BIG THX!

                      Kommentar

                      Lädt...
                      X