nee, hab ich noch nicht, aber mein vServer macht kurze Zeit immer nix anderes mehr.
SELECT DISTINCT Rezepte.ID, Rezepte.Name, Rezepte.Beschreibung FROM Rezepte,
Zutaten AS Zutaten1, Zutaten AS Zutaten2, Zutaten AS Zutaten3,
Zutaten AS Zutaten4, Zutaten AS Zutaten5
WHERE Rezepte.ID = Zutaten1.Rezept_ID AND Zutaten1.Name LIKE '%$zutat1%'
AND Rezepte.ID = Zutaten2.Rezept_ID AND Zutaten2.Name LIKE '%$zutat2%'
AND Rezepte.ID = Zutaten3.Rezept_ID AND Zutaten3.Name LIKE '%$zutat3%'
AND Rezepte.ID = Zutaten4.Rezept_ID AND Zutaten4.Name LIKE '%$zutat4%'
AND Rezepte.ID = Zutaten5.Rezept_ID AND Zutaten5.Name LIKE '%$zutat5%'
Na dann hast Du jetzt neben dem "Autoritaetsbeweis" aus der Literatur auch eine Erklaerung, warum das gerade in diesem Anwendungsfall nachteilig ist, das kannst Du ja Deinem Auftraggeber so mal nahelegen und ihn dann nochmal entscheiden lassen, was er will.Am Anfang hatte ich eiegntlich auch 3 Tabelle geplant, so wie man das in jedem DB-Buch liest,
Lass das mal Deinen Auftraggeber nochmal entscheiden, schliesslich ist es sein Ding (und nicht Deins), nachher auch fuer die noetige Hardwareausstattung zu sorgen, den DB-Server gut zu konfigurieren und regelmaessige Wartungsjob auf dem Server einzurichten!Allerdings hat mein Auftraggeber das nicht für sinnvoll empfunden, den genauen Wortlaut weiss ich jetzt nichtmehr.
Ich werd mal versuchen ob ich es mit den Dynamischen Statements schaffe, und im schlimmsten Fall muss dann wohl doch alles umgebaut werden.
Das ueberrascht mich jetzt allerdings, das muss ich mir merken und bei Gelegenheit, wenn ich mal so eine Sandkastenumgebung habe ausprobieren.Mit deiner Query brauch ich leider länger wie wenn ich es mit dem "IN" mache.
SELECT Rezepte.ID, Rezepte.Name, Rezepte.Beschreibung, COUNT(Zutaten.ID) AS Rank
FROM Rezepte LEFT JOIN Zutaten ON (Rezepte.ID=Zutaten.Rezepte_ID)
WHERE (Zutaten.Name LIKE '$zutat1%' OR Zutaten.Name LIKE '$zutat2%' OR Zutaten.Name LIKE '$zutat3%' OR Zutaten.Name LIKE '$zutat4%' OR Zutaten.Name LIKE '$zutat5%')
GROUP BY Rezepte.ID
ORDER BY Rank DESC
SELECT Rezepte.ID, Rezepte.Name, Rezepte.Beschreibung, COUNT(Zutaten.ID) AS Rank
FROM Rezepte LEFT JOIN Zutaten ON (Rezepte.ID=Zutaten.Rezepte_ID)
WHERE (Zutaten.Name LIKE '$zutat1%' OR Zutaten.Name LIKE '$zutat2%' OR Zutaten.Name LIKE '$zutat3%' OR Zutaten.Name LIKE '$zutat4%' OR Zutaten.Name LIKE '$zutat5%')
GROUP BY Rezepte.ID
ORDER BY Rank DESC
Haettest Du das nicht eher posten koennen .Also wenn ich mich noch einmischen dürfte:
$param = array();
$anzahl = 0;
if($zutat1 != "")
{
$param[$anzahl] = $zutat1;
$anzahl++;
}
if($zutat2 != "")
{
$param[$anzahl] = $zutat2;
$anzahl++;
}
if($zutat3 != "")
{
$param[$anzahl] = $zutat3;
$anzahl++;
}
if($zutat4 != "")
{
$param[$anzahl] = $zutat4;
$anzahl++;
}
if($zutat5 != "")
{
$param[$anzahl] = $zutat5;
$anzahl++;
}
$max = $anzahl - 2;
$schleife = $anzahl;
//Abfrage zusammensetzen
if($anzahl = 0)
$abfrage ="SELECT DISTINCT Rezepte.ID, Rezepte.Name, Rezepte.Beschreibung FROM Rezepte";
else
$abfrage = "SELECT Rezepte.ID, Rezepte.Name, Rezepte.Beschreibung, COUNT(Zutaten.ID) AS Rank ".
"FROM Rezepte LEFT JOIN Zutaten ON (Rezepte.ID=Zutaten.Rezept_ID) ".
"WHERE (".
"Zutaten.Name LIKE '$param[0]%' ";
$i = 1;
while($schleife > $i)
{
$abfrage .= "OR Zutaten.Name LIKE '$param[$i]%' ";
$i++;
}
$abfrage .= ") ".
"GROUP BY Rezepte.ID ".
"ORDER BY Rank DESC ";
$ergebnis = mysql_query($abfrage) or die ("Fehler");
if($zutat1 != "") $param[] = $zutat1;
for ($i = 1; $i <= count($param); $i++)
$abfrage .= "OR Zutaten.Name LIKE '$param[$i]%' ";
We use essential cookies to make this site work, and optional cookies to enhance your experience.