簡體   English   中英

MySQL連接兩個表的where子句

[英]Mysql join two tables where clause

因此,我根據用戶選擇國家/地區,日期等形式列出了一些活動。有兩個表,其中一個主要的“活動”是我的名字,價格,參與者人數等,然后我有“塔里法斯”,我在其中為活動設置了特殊規則,例如,在特定日期是否可以進行活動。 是否有規則,如果沒有規則,我想列出該活動,如果有規則,我只想列出當日可用的情況,這就是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如何適合圖片,但是此查詢將返回所有不具有相關tarifas行的actividades行,以及所有確實具有tarifastarifas.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回連接謂詞。 這樣做將導致tarifas行被忽略,除非它們具有指定的dia值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM