因此,我根据用户选择国家/地区,日期等形式的表单列出了一些活动。
有两个表,主要的一个“活动”是我的名字,价格,参与者数量等,然后我有“ tarifas”,我在其中为活动设置了特殊规则,例如,在某天可以进行活动或不。是否有规则,如果没有规则,我想列出该活动,如果有规则,我只想列出当日可用的情况,这就是tarifas.fechado = 0应该做的。

其他一切都在工作,有人可以帮我解决这个问题吗?

if (!$sql = $db->sql_query("SELECT actividades.dias, actividades.id_pais, actividades.id_regiao, actividades.nome, actividades.id_empresa, actividades.id, actividades.dias, actividades.preco, actividades.id_subcategoria, actividades.hora
                            FROM actividades
                            LEFT JOIN tarifas ON actividades.id = tarifas.id_actividade
                                              AND tarifas.dia = '$dia'
                                              AND tarifas.fechado = 0
                            WHERE pais = '$pais'
                            AND actividades.dias LIKE '%$diaExtenso%'
                            ORDER BY actividades.id ASC
                            LIMIT $pageLimit, $porpagina"))
       {message_die("DS", TRUE); }

最佳答案

我认为您的某些加入条件必须在WHERE子句中。我不清楚tarifas.dia如何适合图片,但是此查询将返回没有相关actividades行的所有tarifas行,以及所有具有tarifas行且tarifas.dia的行具有指定的值,并且tarifas.fechado为零。 (为了方便阅读,我对其进行了格式化):

SELECT
  actividades.dias,
  actividades.id_pais,
  actividades.id_regiao,
  actividades.nome,
  actividades.id_empresa,
  actividades.id,
  actividades.dias,
  actividades.preco,
  actividades.id_subcategoria,
  actividades.hora
FROM
  actividades
  LEFT JOIN tarifas
    ON actividades.id = tarifas.id_actividade
WHERE
  pais = '$pais'
  AND actividades.dias LIKE '%$diaExtenso%'
  AND (tarifas.id_actividade IS NULL
    OR (tarifas.dia = '$dia' AND tarifas.fechado = 0))
ORDER BY actividades.id ASC
LIMIT $pageLimit, $porpagina


您可能希望将tarifas.dia上的条件移回连接谓词。这样做将导致忽略tarifas行,除非它们具有指定的dia值。

关于php - MySQL连接两个表的where子句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27409927/

10-11 23:48