2017-07-22 10 views
1

私はこのクエリの問題を解決しようとしましたが、有効な解決策が見つかりませんでした。私のデータベースの関係や構造にMySQLの3つの異なるテーブルの3つの結合されたカラムの最大値

インサイト:

が、私はそれらの3つのテーブル2第3回tabelからネイティブIDキーを指している外国IDキーを持っているを持って、テーブルのすべての3つの内の日付を持っていますSQLのdatetime値。私の目標で

インサイト:

は、私は、PHPの最新のこれらの3つの日付から日付、および出力その単一の値を見つけたいです。この目標を達成するために、私は3つのテーブルを結合し、選択された3つの列の最新のデータを取り出すために、組み込みSQLの最大関数を使用しました。私のSQLコードで

インサイト:それは残念ながら私には値を返さない上記のクエリを実行し、上記のコードで

SELECT GREATEST(Reacties.datum, Deelnemers.datum ,Skirms.submit_datum) 
FROM Skirms 
INNER JOIN Deelnemers ON Skirms.ID = Deelnemers.skirms_fk 
INNER JOIN Reacties ON Skirms.ID = Reacties.skirms_fk 
WHERE Skirms.ID = 1 

問題

+0

2つの子行のいずれかが欠落している場合はLEFT JOINが必要です。それ以外の場合は、クエリに問題がないことを確認し、データを確認します。 – Serg

答えて

0

これは、複数の行を返す可能性があります。あなたはGREATEST前にMAXを適用することができます。

SELECT GREATEST(MAX(Reacties.datum), MAX(Deelnemers.datum) ,MAX(Skirms.submit_datum)) 

しかし、あなたは、単にそれらのテーブルを結合する必要はありません3つのテーブルから最新の日付をしたい場合は、それぞれの最大の日付とし、それらの最大値を選択します。

select max(maxDate) 
from 
(SELECT max(datum) as maxDate 
    FROM Skirms 
    WHERE ID = 1 

    UNION ALL 

    SELECT max(datum) as maxDate 
    FROM Deelnemers 
    WHERE skirms_fk = 1 

    UNION ALL 

    SELECT max(datum) as maxDate 
    FROM Reacties 
    WHERE skirms_fk = 1 
) AS dt 
+0

あなたは伝説のm8です!それは魅力のように動作します! :) –

関連する問題