0

これは非常に奇妙な問題です。私には3つのテーブルがあり、すべてagent_idにキー関係があります。

今このクエリ:

select DATE_FORMAT(created_on,"%d/%m/%y") as date
from logs
where agent_id = "18"
and log_status="1"
and date_format(created_on,"%m/%y") = "12/12"
group by YEAR(created_on), MONTH(created_on), DAY(created_on) desc

想定どおりに動作し、次の 3 行を返します。

date
31/12/12
30/12/12
26/12/12

ただし、他の2つのテーブルに参加すると、日付が除外されます31/12/12。これはクエリです:

select  DATE_FORMAT(l.created_on,"%d/%m/%y") as date
from logs l
join logs_rewards lr on l.id = lr.related_log_id 
join agents a on a.id = l.agent_id 
where l.log_status = "1" 
and DATE_FORMAT(l.created_on,"%m/%y") = '12/12'
AND l.agent_id = '18' 
group by YEAR(l.created_on), MONTH(l.created_on), DAY(l.created_on) desc

これは以下を返します:

date
30/12/12
26/12/12

そして、なぜそれが起こるのか分かりません。何か助けはありますか?

私はに変更しようとしAND l.agent_id = '18'ましAND a.id = '18'たが、同じ結果です。

4

2 に答える 2

0

ログからすべての結果を取得するために、 JOINLEFT JOINに置き換えたいと思うかもしれません。

于 2012-12-31T09:46:15.643 に答える
0

これは、データが 3 つのテーブルすべてにマップされていないためです。

以下のクエリが機能します

select  DATE_FORMAT(l.created_on,"%d/%m/%y") as date
from logs l
left join logs_rewards lr on l.id = lr.related_log_id 
left join agents a on a.id = l.agent_id 
where l.log_status = "1" 
and DATE_FORMAT(l.created_on,"%m/%y") = '12/12'
AND l.agent_id = '18' 
group by YEAR(l.created_on), MONTH(l.created_on), DAY(l.created_on) desc
于 2012-12-31T09:49:41.953 に答える