2014-02-28 102 views
-1

我在執行一個查詢中的多個選擇時遇到問題。這是我做的:多個SELECT在一個查詢中

SELECT 1 AS VisitsToday, `Datum Bezoek 1` FROM `psttodo-uit` WHERE CAST(`Datum Bezoek 1` AS DATE) = CURRENT_DATE AND PB = 1 
UNION 
SELECT 2 AS ConversationsToday, `Datum Bezoek 1` FROM `psttodo-uit` WHERE CAST(`Datum Bezoek 1` AS DATE) = CURRENT_DATE AND PG = 1 
UNION 
SELECT 3 AS PermitsToday, `Datum Bezoek 1` FROM `psttodo-uit` WHERE CAST(`Datum Bezoek 1` AS DATE) = CURRENT_DATE AND PA = 1; 

但我得到這樣的結果:

array (size=15) 
     0 => 
     array (size=2) 
      'VisitsToday' => string '1' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 08:25:34' (length=19) 
     1 => 
     array (size=2) 
      'VisitsToday' => string '1' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 08:55:34' (length=19) 
     2 => 
     array (size=2) 
      'VisitsToday' => string '1' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 12:22:34' (length=19) 
     3 => 
     array (size=2) 
      'VisitsToday' => string '1' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 12:28:34' (length=19) 
     4 => 
     array (size=2) 
      'VisitsToday' => string '1' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 16:13:34' (length=19) 
     5 => 
     array (size=2) 
      'VisitsToday' => string '2' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 08:25:34' (length=19) 
     6 => 
     array (size=2) 
      'VisitsToday' => string '2' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 08:55:34' (length=19) 
     7 => 
     array (size=2) 
      'VisitsToday' => string '2' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 12:22:34' (length=19) 
     8 => 
     array (size=2) 
      'VisitsToday' => string '2' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 12:28:34' (length=19) 
     9 => 
     array (size=2) 
      'VisitsToday' => string '2' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 16:13:34' (length=19) 
     10 => 
     array (size=2) 
      'VisitsToday' => string '3' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 08:25:34' (length=19) 
     11 => 
     array (size=2) 
      'VisitsToday' => string '3' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 08:55:34' (length=19) 
     12 => 
     array (size=2) 
      'VisitsToday' => string '3' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 12:22:34' (length=19) 
     13 => 
     array (size=2) 
      'VisitsToday' => string '3' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 12:28:34' (length=19) 
     14 => 
     array (size=2) 
      'VisitsToday' => string '3' (length=1) 
      'Datum Bezoek 1' => string '2014-02-28 16:13:34' (length=19) 

我也試過如下:

SELECT `Datum Bezoek 1` AS VisitsToday FROM `psttodo-uit` WHERE CAST(`Datum Bezoek 1` AS DATE) = CURRENT_DATE AND PB = 1 
UNION 
SELECT `Datum Bezoek 1` AS ConversationsToday FROM `psttodo-uit` WHERE CAST(`Datum Bezoek 1` AS DATE) = CURRENT_DATE AND PG = 1 
UNION 
SELECT `Datum Bezoek 1` AS PermitsToday FROM `psttodo-uit` WHERE CAST(`Datum Bezoek 1` AS DATE) = CURRENT_DATE AND PA = 1 

但後來我得到這樣的結果:

array (size=5) 
    0 => 
    array (size=1) 
     'VisitsToday' => string '2014-02-28 08:25:34' (length=19) 
    1 => 
    array (size=1) 
     'VisitsToday' => string '2014-02-28 08:55:34' (length=19) 
    2 => 
    array (size=1) 
     'VisitsToday' => string '2014-02-28 12:22:34' (length=19) 
    3 => 
    array (size=1) 
     'VisitsToday' => string '2014-02-28 12:28:34' (length=19) 
    4 => 
    array (size=1) 
     'VisitsToday' => string '2014-02-28 16:13:34' (length=19) 

我試圖得到的是一個帶有3個按鍵的數組sToday','ConversationsToday'和'PermitsToday',每個人都包含一個從數據庫中選擇日期的數組。

UPDATE:
解決方法有不同的列是這樣的:

SELECT 1 AS VisitsToday, NULL AS ConversationsToday, NULL AS PermitsToday 
FROM `psttodo-uit` WHERE CAST(`Datum Bezoek 1` AS DATE) = CURRENT_DATE AND PB = 1) 
UNION 
SELECT NULL, 2 AS ConversationsToday, NULL 
FROM `psttodo-uit` WHERE CAST(`Datum Bezoek 1` AS DATE) = CURRENT_DATE AND PG = 1) 
UNION 
SELECT NULL, NULL, 3 AS PermitsToday 
FROM `psttodo-uit` WHERE CAST(`Datum Bezoek 1` AS DATE) = CURRENT_DATE AND PA = 1) 

但後來我得到這樣一個錯誤:

Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') 
UNION SELECT NULL, 2 AS ConversationsToday, NU' at line 2 
+0

和你期待什麼呢? – Justin

+0

我試圖得到的是一個包含3個鍵'VisitsToday','ConversationsToday'和'PermitsToday'的數組,每個數組包含一個從數據庫中選擇日期的數組。 – nielsv

回答

2

你試圖給一個列有多個名稱 - 這根本無法完成。使用聯合,列名將在第一次選擇中分配。
More info on UNION

可能的解決辦法是添加不同的列,所以它看起來像這樣:

 
SELECT 1 AS VisitsToday, NULL AS ConversationsToday, NULL AS PermitsToday, ... 
    FROM ... 
UNION 
SELECT NULL   , 2       , NULL    , ... 
    FROM ... 
... 
UNION 
SELECT NULL   , NULL      , 3     , ... 
    FROM ... 
..; 
+0

這應該是一個評論! – Murtaza

+0

因此,我無法在一個查詢中執行多個選擇並將它們區分開來? – nielsv

+0

@nielsv沒有辦法將不同的別名分配給同一個colums,但是你可以用其他方式。我會在一分鐘內更新答案 – Alexander