Wątek przeniesiony 2017-08-21 20:38 z Bazy danych przez Patryk27.

MySQL - Łączenie zapytań

0

Witajcie, jestem początkujący i tworze sobie prostą bazę danych w programie Navicat, Mam problem z łączeniem zapytań a dokładniej chcę połączyć dwa zapytania w jedno i nie mam na to pomysłu chodzi o te zapytania:

SELECT COUNT(*) as Sprzedane_Bilety_01 FROM sprzedane_wrzesien WHERE `Dzień Sprzedania` = '2017-09-01' AND Nazwa = 'Bilet';
SELECT COUNT(*) as Sprzedane_Ksiazki_01 FROM sprzedane_wrzesien WHERE `Dzień Sprzedania` = '2017-09-01' AND Nazwa = 'Ksiazka';
1

union?

0
Patryk27 napisał(a):

union?

Czytałem coś o tym ale za cholerę nie wiem jak to zastosować :/
@Edit Okej jakoś to tego doszedłem a teraz pytanie czy da się połączyć zapytanie SELECT SUM i SELECT COUNT?

1
select col1, col2 from tab1
where warunek;
union 
select col1, col2 from tab2 
where warunek;

Musisz pamiętać że ilość kolumn i kolejność musi być identyczna.

2

@kate87: Ilość kolumn tak ale kolejność już nie. Nawet typy danych nie muszą się zgadzać:

http://sqlfiddle.com/#!9/f5b527/2

Przynajmniej w MySQL'u, bo w MSSQL'u coś takiego już nie przejdzie :)

1

te konkretne dwa zapytania "połączone" powinny wyglądać tak

SELECT 
  sum(case when Nazwa = 'Bilet' then 1 else 0 end) AS Sprzedane_Bilety_01, 
  sum(case when Nazwa = 'Ksiazka' then 1 else 0 end) AS Sprzedane_Ksiazki_01 
FROM 
  sprzedane_wrzesien 
WHERE 
  `Dzień Sprzedania` = '2017-09-01' 
  AND Nazwa in ('Bilet', 'Ksiazka');

BTW tabele typu sprzedane_wrzesien to złe rozwiązanie - nie powinno się danych rozbijać w ten sposób poza mocno specyficznymi przypadkami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1