Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] zmienna WHERE w jednym zapytaniu
M@X
post 28.06.2016, 17:47:59
Post #1





Grupa: Zarejestrowani
Postów: 212
Pomógł: 0
Dołączył: 18.12.2003
Skąd: Warszawa

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


Cześć.

Próbuje wylistowac proste zapytanie.
Mam tabele "users" i kolumny: "name" i "payment" = (1/0)
Chcę wylistować i zliczyć ile takich samych "name" ma payment = 0 a ile payment = 1.
Nie wiem w jaki sposób dać możliwość wyświetlania coś na zasadzie: "WHERE payment = 1 or 2"

  1. $query=mysql_query('SELECT DISTINCT(COUNT(*)) AS how, name FROM users WHERE category = "1" group by name');
  2.  
  3. while($result=mysql_fetch_array($query))
  4. {
  5. echo 'Company: '.$result['name'].' - payment0: ? ? ? / payment1: ? ? ?<br>';
  6. }


Przykładowa tabela:

name | payment
aaa 1
aaa 0
bbb 1
bbb 1
bbb 1


Więc wynik powinien być taki:

Company: aaa - payment0: 1, payment1: 1
Company: bbb - payment0: 0, payment1: 3


W jaki sposób zrobić to w jednym zapytaniu ?


--------------------
"timeo danaos at dona ferentes"
Go to the top of the page
+Quote Post
trueblue
post 28.06.2016, 18:11:32
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


  1. SELECT name,
  2. SUM(ilosc*(1-payment)) AS payment0,
  3. SUM(ilosc*(1-ABS(SIGN(payment-1)))) AS payment1
  4. FROM (SELECT name,payment,COUNT(payment) AS ilosc FROM users GROUP BY name,payment) AS tmp
  5. GROUP BY name


--------------------
Go to the top of the page
+Quote Post
mmmmmmm
post 28.06.2016, 19:58:01
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Z jednym grupowaniem: http://sqlfiddle.com/#!9/1b24c/2
Go to the top of the page
+Quote Post
trueblue
post 29.06.2016, 14:24:13
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Bez COALESCE i CASE:
  1. SELECT
  2. name,
  3. SUM(payment=0) AS payment0,
  4. SUM(payment=1) AS payment1
  5. FROM
  6. users
  7. GROUP BY name;


A swoją drogą, M@X, jaki powinien być wynik, jeśli dla danego name brak jakiejkolwiek opcji payment?


--------------------
Go to the top of the page
+Quote Post
StevDefs
post 24.08.2019, 06:44:52
Post #5





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 22.08.2019

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


Viagra Sildenafil Mujeres tipos de viagra que existen Cytotec Abortion Buy Online In The Us
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.03.2024 - 06:09