danke für den hinweis auf meine dummheit. aber leider kann ich ohne erklärung oder zumindest tips nichts damit anfangen
alle cocktails zeigen, be denen man die zutaten xy braucht
Einklappen
X
-
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
-
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 abfragenIch denke, also bin ich. - Einige sind trotzdem...
Kommentar
-
Original geschrieben von mrhappiness
aber das hilft nur bedingt (wasser wird wohl überall drin sein *g*)
Original geschrieben von mrhappiness
gesucht is ne abfrage, die alle cocktails raussucht, die mit den angegebenen zutaten gemixt werden können.
Original geschrieben von mrhappiness
es darf kein cocktail ausgegeben werden, der auch nur eine einzige zutat mehr braucht
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
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
-
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', ... )
das sind dann die, wo alle zutaten vorhanden sindTBT
Die zwei wichtigsten Regeln für eine berufliche Karriere:
1. Verrate niemals alles was du weißt!
PHP 2 All • Patrizier II Browsergame
Kommentar
-
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
-
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
-
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
-
-
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
Kommentar