Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Rozbudowane zapytanie mysql + sumowanie rekordów, jw
miras
post 20.03.2014, 20:00:34
Post #1





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Witam, mam następujący problem: mam 2 tabele - w jednej id_zamowienia, a w drugiej produkty, które należą do tego zamówienia, mam takie zapytanie, które przypisuje ID zamówienia do produktów i ich cen, potrzbeuję zrobić takie zapytanie, które wyświetli mi ID_zamówienia i zsumowaną cenę wszystkich produktów, które należą do tego zamówienia.

mam tyle:

  1. SELECT * FROM orderr JOIN order_product ON orderr.id = order_product.id_order JOIN product ON order_product.id_product = product.id



@@ edit, zapomniałem o tabelce z cenami produktów, już pobiera mi te dane, teraz potrzebuję tylko zrobić, żeby sumowało mi te dane a nie wyświetlało rekordy jeden pod drugim..

Ten post edytował miras 20.03.2014, 20:17:17


--------------------
Go to the top of the page
+Quote Post
nospor
post 20.03.2014, 20:16:25
Post #2





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6307
Dołączył: 27.12.2004




GROUP BY oraz SUM


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miras
post 20.03.2014, 20:20:00
Post #3





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Tyle już wygooglowałem, ale za cholerę nie moge użyć tego SUM w moim zapytaniu, czy kompletnie źle zacząłem budować te zapytanie?

Ok, już mam:


  1. SELECT orderr.id, SUM( product.price * order_product.quantity )
  2. FROM orderr
  3. JOIN order_product ON orderr.id = order_product.id_order
  4. JOIN product ON order_product.id_product = product.id


tak wygląda moje zapytanie, wszystko działa, potrzebuję jeszcze tylko dodać warunek

taki:

  1. WHERE SUM( product.price * order_product.quantity ) >1000


jak to zrobić ?

Ten post edytował miras 20.03.2014, 20:37:45


--------------------
Go to the top of the page
+Quote Post
in5ane
post 20.03.2014, 20:46:03
Post #4





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Kod
SELECT
    o.id AS order,
    SUM(p.price * op.quantity) AS price
FROM
    order o
INNER JOIN order_product op ON op.id_order = o.id
INNER JOIN product p ON p.id = op.id_product
WHERE
    price > 1000
Może coś takiego zadziała?

@edit: nie powinno się używać nazwy tabeli order tongue.gif

Ten post edytował in5ane 20.03.2014, 20:51:04


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
miras
post 20.03.2014, 20:51:36
Post #5





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


Niestety nie działa..

obecny kod:

  1. SELECT orderr.id, SUM( product.price * order_product.quantity ) AS cena
  2. FROM orderr
  3. JOIN order_product ON orderr.id = order_product.id_order
  4. JOIN product ON order_product.id_product = product.id
  5. GROUP BY orderr.id


kolumna cena normalnie jest, działa elegancko, ale jak zrobię tak:


  1. SELECT orderr.id, SUM( product.price * order_product.quantity ) AS cena
  2. FROM orderr
  3. JOIN order_product ON orderr.id = order_product.id_order
  4. JOIN product ON order_product.id_product = product.id
  5. GROUP BY orderr.id
  6. WHERE cena>1000



to mi wywala:


Something is wrong in your syntax obok 'WHERE cena>1000 LIMIT 0, 30' w linii 6

Ten post edytował miras 20.03.2014, 20:55:04


--------------------
Go to the top of the page
+Quote Post
nospor
post 21.03.2014, 08:04:30
Post #6





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6307
Dołączył: 27.12.2004




Zajrzyj do manuala mysql i zobacz jaka jest prawidlowa kolejnosc poszczegolnych rzeczy w zapytaniu.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miras
post 22.03.2014, 11:52:13
Post #7





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


No dobrze, ale jak zapytanie jest tak zbudowane:

  1. SELECT orderr.id, SUM( product.price * order_product.quantity ) AS cena
  2. FROM orderr
  3. JOIN order_product ON orderr.id = order_product.id_order
  4. JOIN product ON order_product.id_product = product.id
  5. WHERE cena>1000
  6. GROUP BY orderr.id
  7.  


to błąd: #1054 - Nieznana kolumna 'cena' w where clause


--------------------
Go to the top of the page
+Quote Post
nospor
post 22.03.2014, 11:57:08
Post #8





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6307
Dołączył: 27.12.2004




Kominikat wyraznie mowi: nie masz kolumny cena


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
miras
post 22.03.2014, 11:57:51
Post #9





Grupa: Zarejestrowani
Postów: 1 004
Pomógł: 9
Dołączył: 18.01.2011
Skąd: Siedlce

Ostrzeżenie: (30%)
XX---


no ok, rozumiem, myślałem, że to 'robi' za tą kolumnę: SUM( product.price * order_product.quantity ) AS cena

w takim razie jak mam to zrobić?


--------------------
Go to the top of the page
+Quote Post
_Borys_
post 23.03.2014, 18:01:33
Post #10





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Usuń WHERE cena > 1000
Dodaj na końcu HAVING cena > 1000
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: 20.09.2024 - 05:52