Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[SQL-Abfrage] Problem mit Subselect [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[SQL-Abfrage] Problem mit Subselect


 
Anbu
29-03-2007, 12:07 
 
Also ich hab n kleines Problem. Ich will die 30 aktuellsten Artikel auslesen. es dürfen von diesen 30 Artikeln aber nur höchstens drei Artikel in der selben Produktgruppe sein. Mein Problem ist die limitierung der Produktgruppe ich bekomms einfach nicht hin. Ich sitz bestimmt schon seit 2 Stunden im phpmyadmin und fummle an dem Select rum.

Es gibt über 500 Produktgruppen.

Also hier ist mal der Select den ich bisher hab er gibt mir leider nur 12 Artikel aus weiß auch nicht warum.



SELECT shop_artikel.id,shop_artikelbeschr.artikelBez,shop_artikel.produktgruppeID
FROM shop_artikel
INNER JOIN shop_artikelbeschr ON shop_artikel.id = shop_artikelbeschr.artikelID
INNER JOIN shop_preise ON shop_artikel.id = shop_preise.artikelID
WHERE sprachID = 1
AND shop_artikel.wird_angezeigt = '1'
AND shop_preise.preis_VK > 0
AND shop_artikel.bruttogewicht > 0
AND shop_artikel.abmess_l > 0
AND shop_artikel.abmess_b > 0
AND shop_artikel.abmess_h > 0
AND shop_artikelbeschr.langtext IS NOT NULL
AND shop_artikel.produktgruppeID
IN ('SELECT DISTINCT shop_artikel.produktgruppeID FROM shop_artikel LIMIT 0,3')
GROUP BY shop_artikelbeschr.langtext
ORDER BY shop_artikel.id DESC LIMIT 0,30

 
Shurakai
29-03-2007, 12:38 
 
Er gibt dir wahrschl. nur 12 Artikel aus, weil du entweder

a) alles per GROUP BY zusammengefasst hast oder
- viel wahrscheinlicher
b) deine WHERE-Bedingungen nicht auf mehr Datensätze zutreffen.

 
Anbu
29-03-2007, 12:44 
 
Ne kann nicht sein weil wenn ich ohne subselect arbeite gibt er mir 30 Artikel aus

 
Shurakai
29-03-2007, 12:49 
 
Eben. Und im Subselect holst du 3 verschiedene Produktgruppen und wählst dann aus diesen 3 Produktgruppen deine Produkte im richtigen Select aus. Das IN gehört schließlich auch mit zum WHERE.

 
Anbu
29-03-2007, 13:17 
 
hmm ist mir jetzt klar nur nicht wie ich den Select umbauen muss :confused:

 
Anbu
30-03-2007, 17:20 
 
Also immernoch dasselbe Problem ich weiß nicht was ich im Subselect machen muss das mir die 30 neusten Artikel von denen höchstens 3 aus einer Produktgruppe kommen dürfen ausgegeben werden.
Ich weiß echt nicht mehr weiter!!! :confused:

Also hier nochmal der aktuelle SELECT:



SELECT shop_artikel.id,shop_artikelbeschr.artikelBez,shop_artikelbeschr.langtext,shop_artikel.produktgruppe ID
FROM shop_artikel INNER JOIN shop_artikelbeschr ON shop_artikel.id = shop_artikelbeschr.artikelID
INNER JOIN shop_preise ON shop_artikel.id = shop_preise.artikelID
WHERE sprachID = 1
AND shop_artikel.wird_angezeigt = '1'
AND shop_preise.preis_VK > 0
AND shop_artikel.bruttogewicht > 0
AND shop_artikel.abmess_l > 0
AND shop_artikel.abmess_b > 0
AND shop_artikel.abmess_h > 0
AND shop_artikelbeschr.langtext IS NOT NULL
AND produktgruppeID
IN ('SELECT prdouktgruppeID FROM shop_artikel')
GROUP BY shop_artikelbeschr.langtext
ORDER BY shop_artikel.id
DESC LIMIT 0,30

 
goth
31-03-2007, 01:51 
 
Und das Subselect steht bei Dir wirklich in Anführungszeichen?

 
Anbu
02-04-2007, 11:58 
 
Ja aber ich habs jetzt gelöst mit zwei selects und ner whileschleife :D

 
ghostgambler
02-04-2007, 13:19 
 
Der Subselect darf nicht in Anführungszeichen.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:01 Uhr.