加入在MySQL/PHP的两个查询

问题描述:

我需要一些帮助,这:加入在MySQL/PHP的两个查询

我做几个参数搜索:类别,日期(从),日期(到)

下面的代码:

if (count($categorias) > 0) { 
    for ($i = 0; $i < count($categorias); $i++) { 
     if ($i == 0) { 
      $query = "WHERE id_subcategoria = " . $categorias[$i] . " "; 
     } else { 
      $query .= " OR id_subcategoria = " . $categorias[$i] . " "; 
     } 
    } 
} else { 
    $query = ""; 
} 
if (!$sql = $db->sql_query("SELECT * FROM actividades $query ORDER BY id DESC LIMIT " . $pageLimit . "," . PAGE_PER_NO)) { 
    message_die("DS", TRUE); 
} 
$total = $db->sql_numrows($sql); 

if ($total != 0) { 
    while ($linha = $db->sql_fetchrow($sql)) { 
     $SqlEstado = $db->sql_query("SELECT * FROM tarifas WHERE id_actividade = " . $linha['id'] . " AND dia = '$data_min'"); 

首先我得到的所有匹配的类别,然后我去到餐桌“tarifas”检查该产品是否可在当天预订的产品。

所以我的问题是:我可以在一个查询中做到这一切吗?选择产品,并且如果表格“tarifas”中存在规则,则获取该规则。

如果不够清楚,请让我知道,这样我可以用不同的方式揭露问题,我真的很困难。

+1

添加您的数据库架构与您的问题 – 2014-09-03 16:32:41

是的,你在id列上执行JOIN。如果你只想要那些在“tarifas”中的产品,它将是一个INNER JOIN,如果你想要产品,即使它们不在“tarifas”中,它也将是“活动链接左连接tarifas ON ...”。

感谢您的帮助,user3038802!

这里的情况下,它可以帮助任何人以同样的问题代码:

if (!$sql = $db->sql_query("SELECT actividades.nome, actividades.id, actividades.dias, actividades.preco FROM actividades LEFT JOIN tarifas ON actividades.id = tarifas.id_actividade AND tarifas.dia = '$data_min' $query")) { 
    message_die("DS", TRUE); 
}