Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] Prośba o podpowiedź w stworzeniu zapytania
Forum PHP.pl > Forum > Przedszkole
palixmp
Witam.
Niewiem czy w ogóle można tutaj umieszczać takie pytania, no ale zaryzykuje:)
Mam takie 2 tabele:
  1. CREATE TABLE ZAMOWIENIE (
  2. IDZam int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. NazwaOdbiorcy char(50) NOT NULL,
  4. DataZamowienia datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  5. StanRealizacji char(1)
  6. );
  7.  
  8. CREATE TABLE ZAMOWIENIE_POZYCJE (
  9. IDZam int NOT NULL,
  10. IDArtykulu int NOT NULL,
  11. IloscZamowiona int NOT NULL,
  12. IloscZrealizowana int
  13. );


I chcialbym dostać taki wynik, aby mi wyświtlal takie coś, że np. Użytkownik NOWAK pobral: 7 flamastrów i 10 dlugipisów itd.
Choci o to że Nowak w jednym zamówieniu wziął 3 flamastry i 3 dlugopisy, w drugim zamówieniu wziął 5 flamastrów i 7 dlugopisów.

I jakie tutaj stworzyc zapytanie aby mi to wyświetliło?? Czytam o GROUP BY ale kurcze niemoge tego skumac:( Pomógł by ktos??

Z góry dzieki:)
P.S.
Jeszcze dodam ze Nazwę artykulu bym chciał pobierac z tabeli:
  1. CREATE TABLE ARTYKULY_BIUROWE (
  2. IDArtykulu int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. Nazwa char(50) NOT NULL,
  4. NazwaAsortyment char(50) NOT NULL,
  5. IloscSztuk int NOT NULL,
  6. IloscZarezerwowana int NOT NULL,
  7. IloscWidoczna int NOT NULL
  8. );
mirkov
Witam
przychodzi mi do głowy coś takiego, sprawdź czy działa, choć mogę się mylić bo jakiś czas nie używałem sql-a

SELECT IDArtykulu, SUM(IloscZrealizowana) AS Ilosc_Zrealizowana
FROM ZAMOWIENIE_POZYCJE
GROUP BY IDArtykulu;

Sprawdzcie koledzy z forum czy nie zrobiłem błędu
palixmp
Pod adresem http://www.basebox.eu/tabele.pdf dalem wyniki tych 3 tabel. Kiedy użyje tego zapytania:
  1. SELECT IDArtykulu, SUM(IloscZrealizowana) AS Ilosc_Zrealizowana
  2. FROM ZAMOWIENIE_POZYCJE GROUP BY IDArtykulu;

To wynik mam następujący:
IDArtykulu | Ilosc_Zrealizowana
1 | 19
2 | 9
5 | 5
6 | 5

Więc pokazuje tak jak chce, tylko nie umiem teraz zrobić żeby mi do tego jeszcze pokazywal
np. WHERE ZAMOWIENIE.NazwaOdbiorcy = 'Nowak'
Bo jak dam ten dodatkowy waruken:
  1. SELECT ZAMOWIENIE_POZYCJE.IDArtykulu, SUM(ZAMOWIENIE_POZYCJE.IloscZrealizowana) AS Ilosc_Zrealizowana
  2. FROM ZAMOWIENIE_POZYCJE, ZAMOWIENIE
  3. WHERE ZAMOWIENIE.NazwaOdbiorcy = 'Nowak'
  4. GROUP BY ZAMOWIENIE_POZYCJE.IDArtykulu ;


To mi wyskakują jakieś dziwne liczby:( :
IDArtykulu | Ilosc_Zrealizowana
1 | 57
2 | 27
5 | 15
6 | 15

Pomoże ktośquestionmark.gif?
barthpl
Wydaje mi się, że zapytanie którego szukasz może wyglądać tak jak to poniżej
  1. SELECT ilosc.user, ilosc.pobrane, artykuly_biurowe.Nazwa
  2. FROM ( SELECT IDArtykulu, SUM(IloscZrealizowana) AS pobrane, 'Nowak' AS user
  3. FROM zamowienie_pozycje WHERE IDZam IN (SELECT IDZam FROM zamowienie WHERE NazwaOdbiorcy LIKE 'Nowak')
  4. GROUP BY IDArtykulu ) AS ilosc
  5. LEFT JOIN artykuly_biurowe ON ilosc.IDArtykulu = artykuly_biurowe.IDArtykulu
palixmp
Wielkie dzieki barthpl zapytanie dziala super:)

Tylko rozbudowałem to zapytanie i mam problem z wyświetlaniem dobrze zamowien między datami, rozbudowałem to zapytanie tak:
  1. SELECT ilosc.user, ilosc.pobrane, ARTYKULY_BIUROWE.Nazwa
  2. FROM ( SELECT IDArtykulu, SUM( IloscZrealizowana ) AS pobrane, '$NazwaOdbiorcy' AS user
  3. FROM ZAMOWIENIE_POZYCJE WHERE IDZam
  4. IN (
  5.  
  6. SELECT IDZam
  7. FROM ZAMOWIENIE WHERE NazwaOdbiorcy LIKE '$NazwaOdbiorcy' AND (DataZamowienia BETWEEN CAST('$OD' AS DATETIME) AND CAST('$DO' AS DATETIME))
  8. )
  9. GROUP BY IDArtykulu
  10. ) AS ilosc
  11. LEFT JOIN ARTYKULY_BIUROWE ON ilosc.IDArtykulu = ARTYKULY_BIUROWE.IDArtykulu


Ale mam ten sam problem co w poście:
http://forum.php.pl/MYSQLZle_podaje_wyniki...EN_t101551.html

W tamtym zapytaniu, wystarczylo ze dodałem CAST i już tam pokazuje dobrze, a tutaj jeśli wpisze datę DO = 2008-08-28 to mi nie pokazuje zamówień które były zlożone 28-ego, natomiast jeśli wybiore datę 2008-08-29 to dopiero w tedy mi pokazuje z 28-ego.

Dodam jeszcze że w tamtym zapytaniu z tamtego posta, byla taka sprawa, ze niewiem dlaczego ale to też nie działało, ale potrzebowałem jeszcze jeden warunek i dałem po tym całym zapytaniu BETWEEN jeszcze jeden warunek z OR
  1. AND StanRealizacji = 'Z' OR StanRealizacji = 'N' OR StanRealizacji = 'O'

i tam pokazuje dobrze daty. Tutaj też chcialem dodać ten warunek, ale i tak to niedziala sad.gif

Wiedział by ktoś jak to rozwiazac??
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.