0

日名が除外値'excl_days'に設定されている一部のレコードをクエリから除外する必要があります。

単純な関数が機能しています:

SELECT post_id, start, end, excl_days FROM `mytable_events` 
WHERE `excl_days` NOT LIKE '%".$today_name."%' 
ORDER BY DATE(start) DESC

しかし、JOINとGROUPを使用すると、NOT LIKEを追加した後、結果が空になります。NOT LIKEがなければ、すべてが正常に機能しています。

SELECT o1.post_id, o1.start, o1.end, o1.excl_days 
FROM `mytable_events` o1 
JOIN `mytable_posts` o2 ON o1.post_id = o2.ID 
WHERE `o1.excl_days` NOT LIKE '%".$today_name."%'
GROUP BY o1.post_id ORDER BY DATE(o1.start) DESC

完全なクエリは次のとおりです。

SELECT o1.post_id, o1.start, o1.end, o1.excl_days 
FROM `mytable_events` o1 
JOIN `mytable_posts` o2 ON o1.post_id = o2.ID 
WHERE DATE(o1.start) <= '".$today."' AND DATE(o1.end) >= '".$today."'
AND o2.post_type = 'events' AND o2.post_status = 'publish' 
AND `o1.excl_days` NOT LIKE '%".$today_name."%'
GROUP BY o1.post_id ORDER BY DATE(o1.start) DESC

これをどのように機能させるのですか?助けてくれてありがとう。

4

2 に答える 2

1

これを試して:

  SELECT o1.post_id, o1.start, o1.end, o1.excl_days 
  FROM `mytable_events` o1 
  JOIN `mytable_posts` o2 ON (o1.post_id = o2.ID 
  AND o1.excl_days NOT LIKE '%".$today_name."%')
  GROUP BY o1.post_id ORDER BY DATE(o1.start) DESC
于 2013-03-12T14:29:25.317 に答える
0

where 句のバック ティックを削除してみてください。それらは不要であり、正しく形成されていません。

SELECT o1.post_id, o1.start, o1.end, o1.excl_days 
FROM `honchar_events` o1 
JOIN `honchar_posts` o2 ON o1.post_id = o2.ID 
WHERE o1.excl_days NOT LIKE '%".$today_name."%'
GROUP BY o1.post_id ORDER BY DATE(o1.start) DESC
于 2013-03-12T14:27:59.127 に答える