Thread Subselect - wie bekomme ich ein TRUE, wenn KEINE Einträge vorhanden sind? (6 answers)
Opened by olruebe01 at 2009-02-25 14:36

olruebe01
 2009-02-25 14:36
#119129 #119129
User since
2006-01-19
192 Artikel
BenutzerIn
[default_avatar]
Hallo Forum.

Ich stehe mal wieder auf dem Schlauch.

Ich habe 2 Tabellen (hier mal vereinfacht dargestellt): "ebay-Artikel" und "abgegebene Gebote".
In ebay-Artikel stehen alle Artikeldaten von allen möglichen Artikeln und in Gebote, stehen alle Angaben zu bisher abgegebenen Gebote, inklusive der Angabe, ob ein Gebot das Höchstgebot war oder nicht und aus welcher eBay-Kategorie der Artikel stammt.
Nun möchte ich einen(!) zufälligen Artikel aus einer eBay-Kategorie, in der ich bisher auf weniger als 3 Artikel der Höchstbietende bin. Also im Klartext: Ich möchte solange Autoradios angezeigt bekommen, bis in der Tabelle gebote 3 Gebote verzeichnet sind, auf die ich der Höchstbietende bin


Hierfür joine ich zuerst die Tabellen:
Code: (dl )
Select  ebay_id from Artikel LEFT JOIN gebote ON (Artikel.ID = gebote.artikel_id)


Soweit so gut. Jetzt kommt die Bedingung in einem Subselect...
Code: (dl )
1
2
3
4
5
6
7
WHERE (SELECT count( * ) 
FROM gebote
WHERE user_id =1
AND high_bid =1
GROUP BY category, user_id
) <3
Limit 1 Order by Rand()


Soweit so gut. Das ganze klappt tatsächlich, solange ich weniger als 3 Artikel beboten habe. Habe ich jedoch in der TAbelle gebote KEINEN Eintrag, weil ich bisher noch kein Gebot auf ein Autradio abgegeben habe, findet der Subselect nichts und bedingung <3 ist nicht erfüllt :-(

Ich dokter jetzt seit 2 Tagen daran. Ich habe es auch mit having probiert. Damit bekomme ich die gleiche Lösung hin. Aber auch hier ist es so, solange 1 oder 2 Artikel in der Tabelle stehen, funzt es. Steht jedich gar keiner drinnen, gehts nicht mehr weiter.

Not Exists hat mich auch nicht nach vorn gebracht. Hat hier jemand den enstscheidenden Tipp, wo ich den Fehler mache, bzw. wie der richtige Google-Suchbegriff heißt?

Danke schon Mal.

View full thread Subselect - wie bekomme ich ein TRUE, wenn KEINE Einträge vorhanden sind?