Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyświetlenie sumy zamówień których wszystkie elementy spełniają warunek
cos145
post 19.07.2011, 14:45:04
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 23.06.2011

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


Baza wygląda następująco :

  1.  
  2. CREATE TABLE IF NOT EXISTS `orders` (
  3. `id` int(11) NOT NULL,
  4. `sum` decimal(10,2) NOT NULL DEFAULT '0.00',
  5. PRIMARY KEY (`id`),
  6. KEY `sdasdasd` (`id_user`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  8.  
  9. -- --------------------------------------------------------
  10.  
  11. --
  12. -- Struktura tabeli dla `order_detail`
  13. --
  14.  
  15. CREATE TABLE IF NOT EXISTS `order_detail` (
  16. `id_order` int(11) NOT NULL,
  17. `id_prod` int(11) NOT NULL,
  18. `price` decimal(10,2) NOT NULL DEFAULT '0.00',
  19. `amount` int(11) NOT NULL,
  20. PRIMARY KEY (`id_order`,`id_prod`)
  21. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  22.  
  23.  
  24.  
  25. CREATE TABLE IF NOT EXISTS `products` (
  26. `id` int(11) NOT NULL,
  27. `name` varchar(200) COLLATE utf8_polish_ci NOT NULL,
  28. `price` decimal(10,2) NOT NULL DEFAULT '0.00',
  29. PRIMARY KEY (`id`)
  30. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  31.  
  32.  
  33. ALTER TABLE `orders`
  34. ADD CONSTRAINT `sdasdasd` FOREIGN KEY (`id_user`) REFERENCES `users` (`id`) ON DELETE CASCADE;
  35.  
  36.  
  37. ALTER TABLE `order_detail`
  38. ADD CONSTRAINT `order_detail_ibfk_1` FOREIGN KEY (`id_order`) REFERENCES `orders` (`id`) ON DELETE CASCADE;
  39.  


Załóżmy że chcę wyświetlić sumę zamówień 'wartość zamówień' tzn. order.sum , ale tylko dla zamówień w których wszystkie ! produkty zaczynają się od np. P .
Dodam że interesują mnie "wszystkie" bo wiem jak zrobić jeden lub więcej produktów w zamówieniu spełniających warunek

Ten post edytował cos145 19.07.2011, 14:46:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
luckyps
post 19.07.2011, 15:13:33
Post #2





Grupa: Zarejestrowani
Postów: 153
Pomógł: 41
Dołączył: 28.06.2011
Skąd: Częstochowa

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


  1. SELECT sum(orders.sum) JOIN order_detail ON orders.id = order_detail.id_order
  2. JOIN products ON order_detail.id_prod = products.id
  3. WHERE trim(upper(products.name)) LIKE 'P%'


Czy o to Ci chodzi questionmark.gif
Go to the top of the page
+Quote Post
cos145
post 19.07.2011, 18:02:51
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 23.06.2011

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


Zjadłeś 'from orders'

ale bardziej chodziło mi o zapytanie
  1. SELECT o.sum FROM orders o JOIN order_detail od ON o.id = od.id_order
  2. JOIN products p ON od.id_prod = p.id
  3. WHERE trim(upper(p.name)) LIKE 'P%' GROUP BY o.id


tylko problem w tym że zostaną wyświetlone wszystkie zamówienia w których przynajmniej jeden produkt zaczyna się na p.

a wieć np. jeżeli w zamówieniu 1 będzie

1a.Produkt1 i 1b.Mąka to zostanie wyświetlone a nie powinno.

Chcę wyświetlić zamówienia w których wszystkie produkty są na P.
a więc
1a Produkt1 1b Produkt2 i 1c.Powidła

Nie pytajcie mnie tylko dlaczego akurat chce wyświetlić produkty na P. to jest tylko przykład smile.gif
Tak naprawdę chodzi o to żeby wszystkie elementy zamówienia spełniały jakiś warunek w tym przypadku jest to akurat nazwa produktu zaczynająca się na P, ale chodzi o to żeby albo wszystkie spełniały taki warunek albo żaden z nich.

Ten post edytował cos145 19.07.2011, 18:06:59
Go to the top of the page
+Quote Post
YaQzi
post 19.07.2011, 20:30:56
Post #4





Grupa: Zarejestrowani
Postów: 94
Pomógł: 31
Dołączył: 12.10.2008
Skąd: WAT

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


  1. SELECT o.sum
  2. FROM orders o
  3. HAVING
  4. (
  5. SELECT COUNT(*) FROM order_detail od
  6. JOIN products p ON od.id_prod = p.id
  7. WHERE trim(upper(p.name)) LIKE 'P%'
  8. AND od.id_order = o.id
  9. ) =
  10. (
  11. SELECT COUNT(*) FROM order_detail od
  12. JOIN products p ON od.id_prod = p.id
  13. WHERE od.id_order = o.id
  14. )


że tak powiem... blink.gif

Ten post edytował YaQzi 19.07.2011, 21:49:36


--------------------
 Wszystkie wielkości świata nie są tyle warte, co dobra przyjaźń...
Go to the top of the page
+Quote Post
cos145
post 19.07.2011, 22:45:50
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 23.06.2011

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


o to to to . Dzięki za pomoc.

Swoją drogą nie wiedziałem że można używać having bez użycia group by no ale działa smile.gif.
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: 26.06.2025 - 21:44