Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z zapytaniem (zagnieżdżone?)
mosquitoatnight
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.04.2011

Ostrzeżenie: (0%)
-----


Witam, nie mogę poradzić sobie z zapytaniem:

Tabele
Aukcje (id,nazwa)
Oferty (id,id_aukcji,id_uzytkownika,wartosc)

Potrzebuje zwrócić te aukcje w których użytkownik z id=1 wygrał tzn. złożył najwyższa ofertę.
W drugim zapytaniu potrzebuję natomiast zwrócić te aukcje w których brał udział ale przegrał.

Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pmir13
post
Post #2





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

Ostrzeżenie: (0%)
-----


Zakładam, że w aukcji każdy użytkownik może wielokrotnie podbijać cenę, ale każde podbicie musi być wyższe od poprzedniego, tzn wykluczamy sytuację, w której o wygraniu aukcji decydować miałaby kolejność zgłoszeń przy tej samej wartości oferty.
Wtedy wygrane aukcje użytkownika o id=1 otrzymujemy:
  1. SELECT * FROM
  2. ( SELECT id_uzytkownika, id_aukcji, max(wartosc) AS najwyzsza_oferta
  3. FROM oferty WHERE id_uzytkownika = 1 GROUP BY id_aukcji ) AS najwyzsze_oferty_uzytkownika
  4. JOIN
  5. ( SELECT id_aukcji, max( wartosc ) AS zwycieska_oferta
  6. FROM oferty GROUP BY id_aukcji) AS zwycieskie_oferty
  7. ON najwyzsze_oferty_uzytkownika.id_aukcji = zwycieskie_oferty.id_aukcji
  8. WHERE najwyzsza_oferta=zwycieska_oferta

Dla przegranych aukcji wystarczy zmienić warunek w ostatnim WHERE na przeciwny.

Ten post edytował pmir13 25.04.2011, 16:32:33
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 08:26