2016-11-27 98 views
0

我有兩個包含數據的表。 「關鍵字」和「數據」。MySQL:如何從一列中的多列中獲取值

key_id (P) 
key_word 
key_prod (I) 
kay_country 
key_is_wr 

id (P) 
dat_id (I) 
dat_date 
dat_is_weekly 

對於每個關鍵字有在數據表中鏈接的幾個不同的行 - 或用不同的同一日期dat_date。我想只獲取此表中存在的所有日期變體,因此我可以在我的PHP代碼中將它們全部顯示在數組中。

這是當前正在使用的查詢 - 它從我需要的特定「key_app」值中獲取相同日期的列表。但我只想獲得這個特定key_id存在的日期數組。

SELECT * FROM `keywords` 
    JOIN `data` 
    ON `keywords`.`key_id` = `data`.`dat_id` 
    WHERE `keywords`.`key_app`= 10 

我只是還沒有搞清楚尚如何: 1.只得到dat_date部分(我想我需要datadat_date,而不是「*」我的查詢 2.如何。唯一不同的日期存在每個key_prod

我試着用各種ORDER BY的和MAX(ID)並沒有什麼似乎在sytaxes方面很好地工作

SELECT * FROM `keywords` 
    JOIN ( 
      SELECT MAX(id) AS id 
      FROM `data` 
      GROUP BY `data`.`dat_date` 
     ) `keywords` 
    ON `keywords`.`key_prod`=10 

我已經挖了一段時間,但沒有正確的結果

例子: 如果我有dat_date下瓦爾

2016-06-21 
2016-06-21 
2016-06-21 
2016-06-22 
2016-06-22 
2016-06-23 
2016-06-23 

特定key_app - 我將獲得:

2016-06-21 
2016-06-22 
2016-06-23 

作爲查詢結果

+0

你的問題解決了嗎? – FallAndLearn

回答

1

試試這個。

select distinct data.dat_date 
FROM `keywords`, `data` 
ON `keywords`.`key_prod` = `data`.`dat_id` 
WHERE `keywords`.`key_app`= 10 

您的第一個疑問是如何只顯示日期。這可以使用select data.dat_date而不是select *來完成。 Distinct將只列出不同的日期,這是不同的日期,這是你的查詢2.