2014-09-03 117 views
0

我需要一些幫助,這:加入在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

回答

0

是的,你在id列上執行JOIN。如果你只想要那些在「tarifas」中的產品,它將是一個INNER JOIN,如果你想要產品,即使它們不在「tarifas」中,它也將是「活動鏈接左連接tarifas ON ...」。

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); 
}