2014-03-03 133 views
-2

我有一個表,其中包含13列(ID,名稱,圖像,day1-10)。問題是:大多數時候我會有空列。我想知道如何才能讓我的MySQL查詢只會得到非空列,如果這是可能的。跳過空列

我的意思是,不會有永遠day2-10有時只有第1天將被置我只希望從這一行此值。可能嗎?我試着用搜索引擎,但沒有發現任何幫助,我只能想辦法跳過整個行共

我將不得不使用PHP來從該查詢結果。

我嘗試了不同的查詢,但沒有一次成功

+7

NORMALIZE數據 – Strawberry

+0

有什麼問題讓整行,只是用PHP解析您的結果?唯一可以跳過列的方法是在SELECT語句中聲明特定的列(而不是SELECT *)。但是,如果您有時在day1中有值,而其他時間day1爲null,那麼您將需要拉出所有這些行,然後使用PHP進行解析。 – Dan

+0

一旦你從mysql獲得數據,你想怎麼做?不顯示空值的邏輯將在您的php代碼中,而不是在sql中。 –

回答

1

而不是

Table Main 

ID | name | image | day1 | day2 | day3 ... 
------------------------------------------- 
1 | Foo | img1 | 7 | NULL | NULL 
2 | Bar | img2 | 9 | 13 | 14 

您應該標準化您的數據轉換成兩個表是這樣的:

Table Main 

ID | name | image 
------------------ 
1 | Foo | img1 
2 | Bar | img2 


Table Days 

ID | MainID | Day 
------------------ 
100 | 1  | 7 
101 | 2  | 9 
102 | 2  | 13 
103 | 2  | 14 

然後,你會使用JOIN來選擇適用於主表中您是int的任何元素的所有天數

這裏還有一個額外的好處是,你不再僅限於10天。

+0

你是天才!非常感謝你。這解決了我所有的問題 – Lucas