Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Jak powinienem skonstruować zapytanie do 2 tabel?
phpamator
post 8.03.2018, 14:39:49
Post #1





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

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


Witajcie,
Mam dwie tabele:
tabela1 i tabela2
w obu tabelach te same kolumny:
id, sku, qty, name
chciałbym pozbierać i policzyć ilości w/g sku w tabeli1 pozbierać i policzyć według sku w tabeli2 i na koniec zsumować
oto co wymyśliłem:
  1. SELECT table1.sku, table1.qty AS sku_qty_table1, table2.sku AS sku_qty_table2, (table1.qty+table2.qty) AS total_qty
  2. FROM `table1` INNER JOIN `table2` ON table1.sku=table2.sku ORDER BY table1.sku


w wyniku tego zapytania dostaję coś co nijak nie oddaje faktycznych ilości i wygląda:

sku Ascending 1 sku_qty_table1 sku_qty_table2 total_qty
1 1 1 5
1 99 1 103
1 1 1 2
1 99 1 100
2 4 2 10

Jak powinno wyglądać zapytanie żeby działało i zliczało prawidłowo?

Go to the top of the page
+Quote Post
nospor
post 8.03.2018, 14:45:57
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Nie wiem jak inni ale ja probuje i probuje ale nie moge zrozumiec o co ci chodzi.
Pokaz moze przykladowe dane z obu tabel i oraz wynik koncowy jaki chcesz uzyskac


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

"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
Kshyhoo
post 8.03.2018, 14:46:25
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




  1. SELECT (SELECT COUNT(*) FROM tabela1)+(SELECT COUNT(*) FROM tabela2) AS suma;

(*) chyba, że Nospor powie inaczej...


--------------------
Go to the top of the page
+Quote Post
phpamator
post 8.03.2018, 15:00:37
Post #4





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

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


Nie wiem jak prościej opowiedzieć czego oczekuję od zapytania, otóż jak wspominałem mam dwie tabele i w każdej tabeli znajdują się wielokrotnie te same SKU,
chcę zliczyć sku z tabeli 1, sku z tabeli 2 i wyswietlić w osobnej kolumnie jako zsumowane
czyli powinno to wyglądać mniej więcej tak:
  1. tabela 1
  2. sku qty
  3. 1 1
  4. 2 1
  5. 3 1
  6. 2 2
  7. 2 2
  8.  
  9. tabela
  10. sku qty
  11. 1 1
  12. 2 1
  13. 3 1
  14. 2 2
  15. 2 2
  16. 3 3
  17. 3 3
  18.  
  19. powiedzmy że tak to wygląda.
  20.  
  21. SKU | tabela1 | tabel2 | suma z tabeli1/2
  22. 1 | 1 | 1 | 2
  23. 2 | 5 | 3 | 8
  24. 3 | 1 | 7 | 8





@kshyhoo
po wykonaniu twojego zapytania dostałęm "6" co zdecydowanie nie jest prawidłowym wynikiem zliczania ponieważ w tabeli1 sku = 1 powinno dać conajmniej 5

ale oczywiście dziękuję za wkład

Ten post edytował phpamator 8.03.2018, 15:08:43
Go to the top of the page
+Quote Post
nospor
post 8.03.2018, 15:02:33
Post #5





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




No teraz wiadomo o co chodzi.

A nie mozesz poprostu zrobic dwoch zapytan kazde do innej tabeli i kazde z COUNT oraz GROUP BY? To zrobi co ma zrobic a potem sobie w formie tabelki mozesz na stronie wyswietlic jak chcesz


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

"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
Pyton_000
post 8.03.2018, 15:03:34
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Kod
SELECT
  table1.sku,
  SUM(table1.qty) + SUM(table2.qty) AS total_qty
FROM `table1`
  JOIN `table2` ON table1.sku = table2.sku
GROUP BY table1.sku
ORDER BY table1.sku


Ten post edytował Pyton_000 8.03.2018, 15:04:03
Go to the top of the page
+Quote Post
phpamator
post 8.03.2018, 15:12:49
Post #7





Grupa: Zarejestrowani
Postów: 321
Pomógł: 3
Dołączył: 10.07.2016
Skąd: UK-raine

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


Cytat(Pyton_000 @ 8.03.2018, 15:03:34 ) *
Kod
SELECT
  table1.sku,
  SUM(table1.qty) + SUM(table2.qty) AS total_qty
FROM `table1`
  JOIN `table2` ON table1.sku = table2.sku
GROUP BY table1.sku
ORDER BY table1.sku


super Python ale dlaczego w wyniku dostaję sku2 x2 ?
powinienem dostać 105 a dostaję 210 ?

@nospor
jako, że staram się opanować coś więcej niż tylko proste zapytania dlatego chciałem to zrobić w jednym, może w końcu zrozumiem jak to robić.
Go to the top of the page
+Quote Post
aras785
post 8.03.2018, 15:33:39
Post #8





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


podrzuć nam projekt z http://sqlfiddle.com/ a będzie nam łatwiej pomóc 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: 24.04.2024 - 06:59