在mysql / php中加入两个查询

时间:2014-09-03 16:25:30

标签: php mysql join

我需要一些帮助:

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

以下是代码:

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”取得该规则。

如果不够清楚请告诉我,这样我就可以用不同的方式揭露问题了,我真的很挣扎。

2 个答案:

答案 0 :(得分:0)

是的,您在id列上执行JOIN。如果您只想要那些符合&#34; tarifas&#34;如果您想要产品,即使他们不在&#34; tarifas&#34;这将是一个内部联接。它将是&#34; actividades LEFT JOIN tarifas ON ...&#34;。

答案 1 :(得分:0)

感谢您的帮助,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);
}