1
SELECT mein.person_id AS per_Id, DATE( mein.timestamp ) AS dates, SUM( nr_pos ) AS pos, SUM( nr_neg ) AS neg, SUM( nr_neu) AS neu, 
op , clo  
FROM base1.q  
LEFT JOIN base1.mein ON DATE( mein.timestamp ) = q.date  
AND mein.person_id = q.id  
WHERE mein.person_id = 1  
GROUP BY q.date, q.id  
ORDER BY mein.person_id, q.date DESC   

base1上記のコードは次のことを行う必要があります。データベースの2つのテーブル、つまりqとを結合したいmein。これは、列と列が一致する場合、および列と列が一致する場合に結合されるように発生する必要がdate(mein.timestamp)ありq.dateます。これで私が抱えている難しさは、エントリがなくてもエントリをそこに入れたいということです。そのため、左外側の結合を使用しました。残念ながら、エントリがないがエントリが ある行がまだキックアウトされています。これを防止し、それらの行をジョイントテーブルに残しておくにはどうすればよいですか?mein.person_idq.idqdate(mein.timestamp)
date(mein.timestamp)q.date

ありがとう!

4

3 に答える 3

0

変化する

WHERE mein.person_id = 1 

WHERE q.id = 1

したがって、q.id = 1であるbase1.qからすべての行を取得し、行が存在する場合は、mein.timestampとmein.person_idに一致するbase1.meinからの対応する行を取得します。

于 2012-08-30T15:31:37.933 に答える
0

mein.person_idWHERE句でLEFTJOINed列(この場合)をテストすると、その結合がINNERJOINであるかのように動作するように強制されます。代わりに、そのテストを結合条件の一部にします。

SELECT mein.person_id AS per_Id, DATE( mein.timestamp ) AS dates, SUM( nr_pos ) AS pos, SUM( nr_neg ) AS neg, SUM( nr_neu) AS neu, 
op , clo  
    FROM base1.q  
        LEFT JOIN base1.mein 
            ON DATE( mein.timestamp ) = q.date  
                AND mein.person_id = q.id  
                AND mein.person_id = 1  
    GROUP BY q.date, q.id  
    ORDER BY mein.person_id, q.date DESC
于 2012-08-30T15:24:43.750 に答える
0

あなたの参加は

LEFT JOIN base1.mein ON DATE( mein.timestamp ) = q.date  
AND mein.person_id = q.id  AND mein.person_id = 1  
于 2012-08-30T15:25:15.560 に答える