使用And Statement的多个联接不起作用

时间:2014-09-13 21:44:41

标签: mysql inner-join

我似乎无法按预期工作。

"SELECT event_positions.id as ep_id, event_positions.pos_prefered_tech, event_positions.assigned_tech_id, "
. "event_schedule.id as es_id, event_schedule.event_id, event_schedule.event_day, event_schedule.event_stime,"
. "event.id as eid, event.crewer_id as cid, event.event_title, event.crewed_by,"
. "crewer.crewer_company"

. "FROM event_schedule "

. "INNER JOIN event_positions "
. "ON event_schedule.id = event_positions.event_sched_id"

. "INNER JOIN event "
. "ON event_schedule.event_id = event.id"

. "INNER JOIN crewer "
. "ON event.crewer_id = crewer.id "

. "WHERE event_schedule.event_day >= NOW() "
. "AND event.crewer_id = ?"

如果我删除AND语句,它将按预期提取所有数据。但我需要过滤特定的crewer_id

当我尝试这样做时,我得到一个空的结果集。没有错误。

1 个答案:

答案 0 :(得分:1)

似乎在生成的SQL文本中缺少一些空格,例如,在 FROM 之前和 INNER JOIN crewer 之前。你确定这个SQL语句有效吗?

问号字符 ? 看起来不像有效的SQL。所以很可能(我们将假设)此SQL文本用于准备语句,并且问号用作绑定变量的占位符。

如果是这种情况,我怀疑参数bind有问题。

我建议您验证为bind参数提供的值是否为返回行的值,即省略此谓词时查询返回的crewer.id值之一。 / p>

我还建议您使用硬编码的文字值进行测试,而不是问号。再次选择一个文字值,你知道它会返回行。

我怀疑在你调试它时,你会发现问题在于bind参数。 (这只是一种怀疑,因为我没有提供足够的信息来做出决定。)