2012-03-05 11 views
0

このフォームに新しいイムとhopefuly私はいくつかの素晴らしい助けを得ることができます!2つのテーブルを結合し、最新の日付を取得します。

私はログインして販売し、最新または「最新」のエントリを取得し、行ごとに、1社のみで、表1から、企業のASCのリストを表示比較したい3つのテーブル

1 "companies" 
    ID 

2 "log" 
    compid 
    datum (date) 

3 "sales" 
    datumnow (datetime) 
    uppdaterad (datetime) 

を得ました。 (データム、datumnow & uppdateradを比較し、取得企業からのIDごとに1行に表示された最高の日付値)

#RESULT 
Rover - 2012-01-15 
Daniel - 2012-02-01 
Damien - 2012-03-05 

I'veはここ数日間これで苦労をしてを手に入れるcan't溶液。 アプリ助けて!高すぎる。

+0

'他のテーブルにsales'に関し何? 'セールス'にも 'compid'カラムがありますか? –

答えて

0

あなたは、これらの3つの列から最新の日付を返すためにGREATEST()を使用することができます。これは、他のテーブルに関連する別の列がsalesであることを前提としています。上記の構造から、関係は不明です。唯一の1行分の

SELECT 
    companies.ID, 
    GREATEST(log.datum, sales.datumnow, sales.uppdatedad) AS mostrecent 
FROM 
    companies LEFT JOIN log ON companies.ID = log.compid 
    /* Assumes sales also has a compid column. Will edit if new info is posted */ 
    LEFT JOIN sales ON companies.ID = sales.compid 
WHERE log.userid='$userID' AND sales.seller='$userID' 

社あたり最大日付で、GROUP BYMAX()集計を使用します。

SELECT 
    companies.ID, 
    MAX(GREATEST(log.datum, sales.datumnow, sales.uppdatedad)) AS mostrecent 
FROM 
    companies LEFT JOIN log ON companies.ID = log.compid 
    /* Assumes sales also has a compid column. Will edit if new info is posted */ 
    LEFT JOIN sales ON companies.ID = sales.compid 
WHERE log.userid='$userID' AND sales.seller='$userID' 
GROUP BY companies.ID 
+0

恐ろしい!これはトリックでした!百万円! 私は1つのことに言及するのを忘れました。あなたがくれたコードは)=それは私にすべての行を与えることを除いて、私はlog.compid に「ユーザID = 『$のユーザーID』」の追加とsales.compidための「WHERE商品= 『$ユーザID』」ん を完璧に働きました。 ご了承ください。 – user1249956

+0

@ user1249956上記の追加を参照してください。私はどこにGROUP BY companies.IDを入れて..私はあなたのテーブル構造の右側... –

+0

はい、あなたがした=) 、最終的な1つを得たと思いますか? – user1249956

関連する問題