[英]MySQL combining several select statements
想知道如何/是否可以合并两个选择语句。
$searchCat = $mysqli->query("SELECT category_id, category.name FROM category WHERE category.name = '$searchTerm'");
while ($r=$searchCat->fetch_assoc()) {
$category_id=$r["category_id"];
$searchBus = $mysqli->query("SELECT business.name, business.street FROM business WHERE business.category_id = '$category_id'");
while ($r=$searchBus->fetch_assoc()) {
$name=$r["name"];
$street=$r["street"];
echo "$name, $street<br>";
}
} // end of while
对于输出,我只需要Business表中的数据,第一个选择将找到搜索词的相关ID,该ID也包含在Business表中。
那么我可以在第一个选择获得ID并将其传递给第二个选择时让我跳过第一个While的联接或联合吗?
您也可以使其成为单个查询。
$query = "SELECT `business`.`name`, `business`.`street`
FROM `business`, `category`
WHERE
`business`.`category_id` = `category`.`category_id`
AND
`category`.`name` = '$searchTerm'";
$searchBus = $mysqli->query($query);
SELECT category_id, category.name
FROM category c inner join business b using (category_id)
WHERE category.name = {Term}
尽管当前可以进行SQL注入,但是请避免查询
您可以使用exists
运算子:
SELECT business.name, business.street
FROM business
WHERE EXISTS (SELECT *
FROM category
WHERE category.name = '$searchTerm' AND
category.category_id = business.category_id)
SELECT business.name, business.street, category.name
FROM business
JOIN category ON category.category_id = business.category_id
WHERE category.name = '$searchTerm'
SELECT business.name, business.street
FROM category c, business b
WHERE c.category_id = b.category_id and c.name = '$searchTerm'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.