Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dwa SELECTy jako jeden wynik z różnymi kolumnami
Forum PHP.pl > Forum > Bazy danych > MySQL
wujek2009
Hej,

Mam następujące zapytanie:
  1. SELECT count(vu.id) AS num_vote_up FROM project_vote AS vu WHERE vu.project_id = 4 AND vu.vote_type = 'up'
  2. UNION
  3. SELECT count(vu.id) AS num_vote_down FROM project_vote AS vu WHERE vu.project_id = 4 AND vu.vote_type = 'down'


Jednak zwraca on jedną kolumnę num_vote_up z dwoma pozycjami (screen: http://iv.pl/images/80662504519608965673.png)

Chciałbym, aby select zwrócił JEDEN wiersz z dwoma kolumnami: num_vote_up, num_vote_down.
Próbowałem każdy select w nawias zabrać i później dodać alias, ale mam błąd składniowy:

  1. (SELECT count(vu.id) FROM project_vote AS vu WHERE vu.project_id = 4 AND vu.vote_type = 'up') AS num_vote_up
  2. UNION
  3. (SELECT count(vu.id) FROM project_vote AS vu WHERE vu.project_id = 4 AND vu.vote_type = 'down') AS num_vote_down


komunikat:
Kod
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AS num_vote_up LIMIT 0, 25 UNION
(' at line 1


chociaż wydawało mi się, że kiedyś już tak robiłem z UNIONami i aliasami i działało
Pyton_000
  1. SELECT count(IF(vu.id = 'up', 1, NULL) AS 'up', count(IF(vu.id = 'up', NULL, 1) AS 'down' FROM project_vote AS vu WHERE vu.project_id = 4
wujek2009
Ciekawe rozwiązanie, dzięki za info.

  1. # brakowało tylko nawiasów, ale tak to jest ok
  2. SELECT count(IF(vu.id = 'up', 1, NULL)) AS 'up', count(IF(vu.id = 'up', NULL, 1)) AS 'down' FROM project_vote AS vu WHERE vu.project_id = 4


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.