Php 修复hackishsqlwhere子句
我有两张表,Php 修复hackishsqlwhere子句,php,mysql,where-clause,where,Php,Mysql,Where Clause,Where,我有两张表,活动和活动之旅活动有许多活动之旅,并且与活动相关。id活动之旅。活动之旅id。我编写了以下SQL来选择两个表中具有两个条件之一的行 如果有特定的活动\u游览。游览类型或 该活动有多个巡演 这个问题似乎有点陈词滥调。有人能帮我提高这个查询的效率吗 SELECT SQL_CALC_FOUND_ROWS activities.activity_name, activities.image_path, activity_tours.tour_type FROM
活动
和活动之旅
<代码>活动有许多活动之旅
,并且与活动相关。id
活动之旅。活动之旅id
。我编写了以下SQL来选择两个表中具有两个条件之一的行
活动\u游览。游览类型
或SELECT SQL_CALC_FOUND_ROWS
activities.activity_name,
activities.image_path,
activity_tours.tour_type
FROM
activities
LEFT JOIN activity_tours ON activities.id = activity_tours.activity_id
WHERE
(
activity_tours.tour_type != 17 OR (
(SELECT count(*) FROM activity_tours WHERE activity_id = activities.id) > 1)
)
不知道如何处理
tour\u type
列;应该使用聚合,但我不知道是哪一个。也许您可以执行GROUP\u CONCAT()
?请为相关表添加create sql语句。这将有助于更好地理解数据模型!
SELECT a.activity_name,
a.image_path,
at.tour_type,
MAX(at.tour_type != 17) AS tour_not_17,
COUNT(*) AS tour_count
FROM activities a
INNER JOIN activity_tours at ON a.id = at.activity_id
GROUP BY a.activity_name, a.image_path
HAVING tour_not_17 OR tour_count > 1