2016-11-27 1 views
0

Ich habe 2 Tabellen mit Daten. "Schlüsselwörter" und "Daten".MySQL: So erhalten Sie Werte aus mehreren Spalten in einer Spalte

key_id (P) 
key_word 
key_prod (I) 
kay_country 
key_is_wr 

und

id (P) 
dat_id (I) 
dat_date 
dat_is_weekly 

Für jedes Schlüsselwort gibt es ein paar verschiedene Zeilen in der Datentabelle verknüpft - mit anderen oder die gleichen Daten in dat_date. Ich möchte alle Variationen von Daten, die in dieser Tabelle existieren, nur einmal bekommen, damit ich sie alle in einem Array auf meinem PHP-Code anzeigen kann.

Dies ist die Abfrage im Moment verwendet - es ruft mir eine Liste der gleichen Daten aus dem spezifischen "key_app" Wert, den ich brauche. Aber ich möchte nur ein Array von Daten, die für diese spezifische Schlüssel-ID existieren.

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

Ich habe Figur nur noch nicht, wie zu: 1. nur den dat_date Abschnitt (ich glaube, ich data brauche dat_date anstelle der „*“ in meiner Anfrage 2. Wie bekommen.. nur die verschiedenen Daten, die für jeden key_prod existieren.

ich habe versucht, alle möglichen ORDER BY mit und MAX (id) und nichts scheint in Bezug auf sytaxes gut zu funktionieren

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

Ich habe es für eine Weile zu graben, aber kein richtiges Ergebnis

Beispiel: Wenn ich unter dat_date habe die Vars

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

für ein bestimmtes key_app - ich bekomme:

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

als Abfrageergebnis

+0

Liste ist Ihr Problem gelöst? – FallAndLearn

Antwort

1

Versuchen Sie dies.

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

Ihre erste Abfrage war, wie nur das Datum angezeigt werden soll. Dies kann unter Verwendung von select data.dat_date anstelle von select * erfolgen. Distinct wird nur bestimmte Daten nicht die gleichen Daten, die Ihre Abfrage 2 war.

Verwandte Themen