我有3个不同的查询,如下所示:
$query = "select category_id,category_name from category";
$result = $this->Dbmodel->customQueryResult($query);
$query = "select location,location_name from sub_category";
$result_one = $this->Dbmodel->customQueryResult($query);
$query = "select category_date,category_month from other_category";
$result_two = $this->Dbmodel->customQueryResult($query);
在这里,我呼叫mysql
服务器3次,以执行我的query
,从而获得result
..
现在我正在考虑如何减少mysql
来电,以便在query
单个查询中执行所有这3个one
,这样只需拨打mysql server
一次并显示使用php
我怎么能这样做..任何帮助或建议都会有很大的帮助..提前感谢
答案 0 :(得分:1)
这将是完全可靠的
$query = "select category.category_id,category.category_name, sub_category.location,sub_category.location_name,other_category.category_date,other_category.category_month from category,sub_category,other_category";
您可以使用类似的联合属性。
$query = "select * from category, sub_category, other_category";
注意:在*上,您可以阅读此问题MySQL - specific columns on join?
答案 1 :(得分:1)
您所描述的是SQL UNION。
以下是您可以用来实现目标的示例查询:
SELECT category_id,category_name FROM category
UNION
SELECT location,location_name FROM sub_category
UNION
SELECT category_date,category_month FROM other_category
使用示例:
$query = 'SELECT category_id, category_name FROM category
UNION
SELECT location, location_name FROM sub_category
UNION
SELECT category_date, category_month FROM other_category';
$result = $this->Dbmodel->customQueryResult($query);
echo 'CategoryID: ' . $result['category_id'] . '<br />';
echo 'Category Name: ' . $result['category_name'] . '<br />';
echo 'Location: ' . $result['location'] . '<br />';
echo 'Location Name: ' . $result['location_name'] . '<br />';
echo 'Category Date: ' . $result['category_date'] . '<br />';
echo 'Category Month: ' . $result['category_month'];
请记住,如果您需要从不同的表中选择具有相同名称的字段以使用SQL别名。别名的一个例子:
SELECT category_id AS `catID` FROM category
而不是$ result [&#39; category_id&#39;],而是使用$ result [&#39; catID&#39;]代替。
答案 2 :(得分:1)
As you are saying none of the tables are related, you have to fetch 3 queries.
如果没有任何关系,则不应合并查询。否则它会给你含糊不清的数据。
当存在某种关系以最小化查询时,我们使用子查询,连接。
无论如何,如果第1列,第2列具有相同的数据类型,您可以获得3个查询结果,并且您可以从第3列中识别它的表名。
SELECT category_id,category_name, 'category' FROM category
UNION
SELECT location,location_name, 'sub_category' FROM sub_category
UNION
SELECT category_date,category_month, 'other_category' FROM other_category
答案 3 :(得分:0)
如果表格相关,您可以使用连接。如果不是这种情况你可以使用mysql UNION
这就像......
$query = "select category_id,category_name from category UNION select location,location_name from sub_category UNION select category_date,category_month from other_category";
答案 4 :(得分:0)
如果所有3个查询都有相同的数据,那么我们可以合并所有3个查询,否则它将无用。
另一种方式,就像跟随
选择c.category_id,c.category_name, l.location,l.location_name, o.category_date,o.category_month 来自C类, sub_category l, other_category o
但是上面会得到有意义的数据。