我有一个由 7 个表组合而成的 select 语句
SELECT * (//instead of * i put in my code the proper columns i need from the selected tabls)
FROM
ev_events_eve
LEFT JOIN ev_events_multilang_evmulti ON ev_events_multilang_evmulti.event_evmulti = ev_events_eve.id_eve
LEFT JOIN ev_schedule_sch ON ev_schedule_sch.event_id_sch = ev_events_eve.id_eve
LEFT JOIN ev_events_type_et ON ev_schedule_sch.event_type_id_sch = ev_events_type_et.id_et
LEFT JOIN ev_events_type_multilang_etmulti ON ev_events_type_multilang_etmulti.idevent_type_etmulti = ev_events_type_et.id_et
LEFT JOIN ev_schedule_multilang_schmulti ON ev_schedule_multilang_schmulti.id_schedule_schmulti = ev_schedule_sch.id_sch
LEFT JOIN ev_timetable_tt ON ev_timetable_tt.schedule_id_tt = ev_schedule_sch.id_sch AND ev_timetable_tt.event_id_tt = ev_events_eve.id_eve
WHERE (ev_events_eve.active_eve = 1 AND ev_schedule_multilang_schmulti.iso_code_lang_schmulti = '{$current_language}' AND ev_schedule_sch.active_sch = 1) AND
ev_timetable_tt.end_date_tt > CURDATE() OR (ev_timetable_tt.weekday_tt = DAYNAME(CURDATE()) AND ev_timetable_tt.end_date_tt > CURDATE()) OR ev_timetable_tt.specific_date_tt > CURDATE()
ORDER BY ev_timetable_tt.start_date_tt ASC LIMIT 3
该语句忽略where子句的问题,每次我使用mysql时,我都使用创建示例sql语句由两个或三个具有正常左连接或内连接的表组成,我需要有人与我讨论这个问题,它可能会让我进一步查看我的代码中没有提到的东西,但是我知道上面的代码不足以让任何人与我一起处理这个问题,但我需要有人可以与我讨论
我用以下信息更新了问题
主要业务规则:
- 该项目适用于多语言网站
- 这些表格是:
ev_events_eve
(整个事件的事件实体,如 id、徽标、标语、开始和结束日期)ev_events_multilang_evmulti
(主事件表的多语言表,如名称(en、fr、gr .. 等)、描述...等)ev_schedule_sch
(调度实体,如 id,事件表的外键)ev_schedule_multilang_schmulti
(主日程表的多语言表)ev_timetable_tt
(存储与 ev_schedule_sch 表相关的开始和结束日期和时间)
- 每个表都被复制到两个表中,其中一个用于存储实体,另一个用于存储多语言数据
- 表之间的关系
- 主表是 ev_events_eve
ev_events_multilang_evmulti
通过外键与主表相关ev_schedule_sch related
通过外键到主表ev_schedule_multilang_schmulti
ev_schedule_sch
通过外键与表相关ev_timetable_tt
ev_schedule_sch
通过外键关联
我需要编写一个语句来从事件表中检索传入的 3 行(假设我需要检索最新的 3 行,因为您没有所有字段的完整架构,稍后我们可以在 WHERE 子句中讨论: ) ) 加上这 3 行还从日程表中检索 6 行,这些行与事件表中的每一行相关所以估计结果必须是这样的假设我有 4 个事件
- 第一个被称为:事件#1
- 此事件在时间表相关表中有 3 行(因此检索
所有这些行)
- 此事件在时间表相关表中有 3 行(因此检索
- 第二个被称为:事件#2
- 这在计划相关表中有 11 行(仅从中检索 6 行)
- 这在计划相关表中有 11 行(仅从中检索 6 行)
- 第三个被称为:事件#3
- 此事件在日程相关表中没有任何与其相关的行
- 此事件在日程相关表中没有任何与其相关的行
- 第 4 个被称为:事件#4
- 此事件在日程相关表中只有 1 行与之相关
如上所述,我只需要检索日程表中的前 3 个事件和相关事件