Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z zapytaniem (serwis aukcyjny), zapyt o list.aukcji w ktorych user licyt
sobstel
post 10.12.2004, 11:35:44
Post #1





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


mysql 4.0.20

robie wlasnie projekt na zaliczenie i natknalem sie na maly problem.

mam 3 tabele:

AUKCJE: id_aukcji, tytul, opis
LICYTACJE : id_aukcji, id_uzytkownicy, suma_licytacji
UZYTKOWNICY: id_uzytkownicy, login

teraz chcialbym wyciagnac te aukcje, w ktorych danych uzytkownik bral udzial (note: jesli user lictowal np. 3 razy to w LICYTACJE sa odpowiednio 3 rekordy, nie tak jak na allegro jeden)

dla wyciagniecia listy aukcji robilem to tak mniej wiecej tak...
  1. SELECT aukcje.id_aukcji, aukcje.tytul, MAX(licytacje.suma_licytacji) AS obecna_cena, COUNT(licytacje.suma_licytacji) AS ilosc_ofert FROM aukcje LEFT JOIN lictacje USING (id_aukcji) WHERE <span style="font-style: italic;">warunki w zaleznosci od tego czy wyciagam przedmioty sprzedane, sprzedawane, niesprzedane czy tez po prostu liste dla danej kategori GROUP BY aukcje.id_aukcji;


jednak korzystajac z powyzszegoz apytania do wyciagneicia dla aukcji, w ktorych danych uzytkownik bral udzial tj. waruenk WHERE licytacje.id_uzytkownika=id_usera_wysylajacego_żądanie, pojawia sie problem ze OBECNA_CENA i ILOSC_OFERT nie beda sie zgadzac!

jakies pomysly by to rozwiazac? zaznaczam ze chodzi mi o zalatwienie tego jednym zapytaniem.


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
Ar2r
post 17.12.2004, 18:04:47
Post #2





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


Nie widzę w tym pytaniu złączenia z tablicą UZYTKOWNICY
Go to the top of the page
+Quote Post
sobstel
post 17.12.2004, 18:19:04
Post #3





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat(Ar2r @ 2004-12-17 18:04:47)
Nie widzę w tym pytaniu złączenia z tablicą UZYTKOWNICY

bo jest niepotrzebne...


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
Ar2r
post 17.12.2004, 18:24:49
Post #4





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


A skąd bierzesz id_usera_wysylajacego_żądanie
Go to the top of the page
+Quote Post
sobstel
post 17.12.2004, 23:37:44
Post #5





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat(Ar2r @ 2004-12-17 18:24:49)
A skąd bierzesz id_usera_wysylajacego_żądanie

z sesji


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
LukaszLenart
post 18.12.2004, 23:32:04
Post #6





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 22.11.2003
Skąd: Sucha Beskidzka

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


Chyba trzeba uzyc jeszcze GROUP BY id_uzytkownicy i zlaczasz w zla strone, powinno byc Licytacje left join Aukcje, wtedy dostanie informacje o liczbie licytacji dla danej aukcji. W twoim przypadku dostajesz aukcje i ostatnia licytacje ja dotyczaca (lub inna przypadkowa)


--------------------
Lukasz
Go to the top of the page
+Quote Post
sobstel
post 19.12.2004, 12:03:23
Post #7





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat(LukaszLenart @ 2004-12-18 23:32:04)
Chyba trzeba uzyc jeszcze GROUP BY id_uzytkownicy i zlaczasz w zla strone, powinno byc Licytacje left join Aukcje, wtedy dostanie informacje o liczbie licytacji dla danej aukcji. W twoim przypadku dostajesz aukcje i ostatnia licytacje ja dotyczaca (lub inna przypadkowa)

1. jak zrobie GROUP BY id_uzytkownika to otrzymam uzytkownikow, a nie aukcje.

2. jak zlacze licytacje left join aukcje to nie dostane aukcji, w ktorych nikt nie bral udzialu. (poza tym ten left join w praktyce oznacza aukcje inner join licytacje)
skrypt ten ma byc odpowiedzialny za wyswietlanie listy aukcji we wszystkie mozliwe sposoby (z wyszukiwarki, po wybrnaiu kategori, dla uzytwkonika kupione,s przedane, sprzedawane, kupowane, itp.)

3. w moim przypadku nie pobieram niczego z tabeli licytacji tylko z tabeli aukcje. w wyniku czego po uzyciu GROUP otrzymuje konkretna liczbe aukcji i najwyzsza oferte. problem pojawia sie gdy chce wproadzic watunek ograniczajacy dla kogos kto licytuje ale jego oferta nie jest najwyzsza, bo przy WHERE id_uzytkownika te liczby sila rzeczy nie sa dobre.

4. tak czy owak problem postanowilem rozwiazac przez dodanie dodatkowych kolumn w tabeli aukcje : obecna_cena, ilosc_ofert.

5. dziekuje wszystkim ktorzy zechcieli tu zajrzec i podzielic sie uwagami!

Ten post edytował sopel 19.12.2004, 12:04:22


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
popbart
post 19.12.2004, 14:01:02
Post #8





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


Cytat
jednak korzystajac z powyzszegoz apytania do wyciagneicia dla aukcji, w ktorych danych uzytkownik bral udzial tj. waruenk WHERE licytacje.id_uzytkownika=id_usera_wysylajacego_żądanie, pojawia sie problem ze OBECNA_CENA i ILOSC_OFERT nie beda sie zgadzac!


Chyba to bedzie działać winksmiley.jpg
  1. SELECT aukcje.id_aukcji, aukcje.tytul, MAX(licytacje.suma_licytacji) AS obecna_cena, COUNT(licytacje.suma_licytacji) AS ilosc_ofert
  2. FROM aukcje LEFT JOIN lictacje USING (id_aukcji)
  3. WHERE aukcje.id_aukcji IN(SELECT id_aukcji FROM licytacje WHERE id_uzytkownika=id_usera_wysylajacego_żądanie)
  4. GROUP BY aukcje.id_aukcji


--------------------
Visual Basic - kto by pomyślał :)
Go to the top of the page
+Quote Post
sobstel
post 19.12.2004, 14:45:24
Post #9





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


powinno. sęk w tym ze jestem ograniczony do mysql 4.0.20. podzapytania są dostępne dopiero od 4.1

co do problemu obecnie nie widzę innego sposobu, chyba za dużo chciałem zrobić za jedym zamachem.

Ten post edytował sopel 19.12.2004, 14:45:41


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:34