php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 18-08-2007, 20:54
kochtagebuch
 Newbie
Links : Onlinestatus : kochtagebuch ist offline
Registriert seit: Aug 2007
Beiträge: 3
kochtagebuch ist zur Zeit noch ein unbeschriebenes Blatt
Standard mysql Subqueryproblem

Hallo zusammen,
ich baue gerade eine Kochseite auf. die dbs stehen und es tut alles auch so weit.
nun möchte ich eine suche innerhalb der rezepte absetzen, die sucht, in welchen rezepten die zutat X
als auch die zutat Y vorkommt.
bisher mache ich das über 2 db-abfragen, da klappts dann aber mit blättern nicht so doll :-)

mit der abfrage

"SELECT rezept_zutaten.rezept_id, rezept_zutaten.zutaten_id, rezept.name
FROM rezept_zutaten LEFT JOIN rezept ON rezept_zutaten.rezept_id = rezept.id
where zutaten_id = X order by name asc"

finde ich alle rezepte in denen die zutat X vorkommt.
(im beispiel-sql gibt es mit der zutat 2 und 29 diverse treffer) siehe (http://www.kochtagebuch.de/rezept_zutaten.sql)
ich möchte aber alle rezepte, in denen die zutat X als auch Y, Z ... N vorkommen.

eigentlich müsste das über eine Multiple Row Subquery gehen, soweit ich aber weiss, gibt es hier
als Mengenoperatoren lediglich (ANY, ALL, [NOT] IN, EXISTS, UNION, INTERSECT, MINUS)
quelle : (http://www.inweb.de/chetan/Deutsch/Ressourcen/SQL.html).
ich müsste aber ein AND haben.

da ich nun schon diverse stunden mit dem problem verbracht habe wollte ich euch bitten, ob jemand
eine idee hat ??

geht das überhaupt mit einer query ??

bin für jede hilfe dankbar !!
greez
markus

p.s. Mysql-Version 5.0.x / php-Version 5.2

Geändert von kochtagebuch (18-08-2007 um 20:57 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 18-08-2007, 21:20
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard Re: mysql Subqueryproblem

Ein JOIN für jede Zutat, die drin sein muß?
Mit Zitat antworten
  #3 (permalink)  
Alt 19-08-2007, 00:02
kochtagebuch
 Newbie
Links : Onlinestatus : kochtagebuch ist offline
Registriert seit: Aug 2007
Beiträge: 3
kochtagebuch ist zur Zeit noch ein unbeschriebenes Blatt
Standard

meinst du einen self-join ?

habs probiert mit
SELECT rezept_zutaten.zutaten_id AS "z1", rezept_zutaten.zutaten_id AS "z2"
FROM rezept_zutaten
WHERE "z1" =2
AND "z2" =29

mit dem ergebniss :
MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen)

selbes resultat wie :
SELECT rezept_zutaten.zutaten_id AS "z1", rezept_zutaten.zutaten_id AS "z2"
FROM rezept_zutaten
WHERE rezept_zutaten.zutaten_id =2
AND rezept_zutaten.zutaten_id =29

noch ne idee ??
Mit Zitat antworten
  #4 (permalink)  
Alt 19-08-2007, 02:56
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Da steckt doch kein einziger JOIN drin.

Ich meinte es so:
SELECT z1.... FROM rezept r
LEFT JOIN rezept_zutaten z1 ON z1.rezept_id = r.id AND z1.zutaten_id = X
...
LEFT JOIN rezept_zutaten zN ON zN.rezept_id = r.id AND zN.zutaten_id = N
WHERE {mind. ein zK ist nicht NULL}

Mit GROUP_CONCAT ginge es vielleicht auch, aber dafür bin ich jetzt zu müde.
Mit Zitat antworten
  #5 (permalink)  
Alt 19-08-2007, 11:36
kochtagebuch
 Newbie
Links : Onlinestatus : kochtagebuch ist offline
Registriert seit: Aug 2007
Beiträge: 3
kochtagebuch ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wir ham uns irgendwie falsch verstanden ..
die tabelle die durchsucht wird ist primär die rezept_zutaten

also, ich habe eine tabelle rezepte
CREATE TABLE `rezept` (
`id` int(11) NOT NULL auto_increment,
`name` char(70) default NULL,
PRIMARY KEY (`id`)
)

eine tabelle zutaten
CREATE TABLE `zutaten` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
PRIMARY KEY (`id`)
)

eine tabelle rezept_zutaten
CREATE TABLE `rezept_zutaten` (
`id` int(11) NOT NULL auto_increment,
`rezept_id` int(11) default '0',
`zutaten_id` int(11) default '0',
PRIMARY KEY (`id`)
)

Die Beziehungen sehen vereinfacht wie folgt aus :

DB : rezept         rezept_zutaten         zutaten
Feld : id <--(1 : 1)--> rezept_id
Feld : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;&nbsp;zutaten_id <--(n : 1)--> id
Mit Zitat antworten
  #6 (permalink)  
Alt 19-08-2007, 12:33
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
nun möchte ich eine suche ..., die sucht, in welchen rezepten die zutat X als auch die zutat Y vorkommt.
Das bringt mich intuitiv auf SELECT * FROM rezepte mit dem genannten Rattenschwanz von JOINS. Irgendwie gefällt mir diese Lösung zwar selbst nicht, aber mir fällt einfach nichts besseres ein.

Was du hier als "primär" bezeichnest, ist mir völlig egal. Überlege dir lieber, was beim Auswerten der Query passiert oder probiere sie mal aus.

Geändert von onemorenerd (19-08-2007 um 13:39 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:51 Uhr.