Php MySQL-压缩查询

Php MySQL-压缩查询,php,mysql,Php,Mysql,谈到MySQL,我是自学成才的,我不确定这样做的正确方式是什么: $type1_sql ="SELECT * FROM type1 WHERE type1_id=$type1_id"; $type1_res =mysqli_query($handle_db, $type1_sql); $type1_row =mysqli_fetch_array($type1_res); $type1_name =$type1_row[

谈到MySQL,我是自学成才的,我不确定这样做的正确方式是什么:

$type1_sql          ="SELECT * FROM type1 WHERE type1_id=$type1_id";    
$type1_res          =mysqli_query($handle_db, $type1_sql);
$type1_row          =mysqli_fetch_array($type1_res);
$type1_name         =$type1_row['name'];

$type2_sql          ="SELECT * FROM type2 WHERE type2_id=$type2_id";    
$type2_res          =mysqli_query($handle_db, $type2_sql);
$type2_row          =mysqli_fetch_array($type2_res);
$type2_name         =$type2_row['name'];

$type3_sql          ="SELECT * FROM type3 WHERE type3_id=$type3_id";    
$type3_res          =mysqli_query($handle_db, $type3_sql);
$type3_row          =mysqli_fetch_array($type3_res);
$type3_name         =$type3_row['name'];
做我正在做的事情是否更好;单独查询所有内容,还是有办法将所有内容压缩为一个查询

谢谢,
Jason

如果每个表只需要列
名称
,则可以使用
选择联合查询:

(SELECT name FROM type1 WHERE type1_id=$type1_id)
UNION
(SELECT name FROM type2 WHERE type2_id=$type2_id)
UNION
(SELECT name FROM type3 WHERE type3_id=$type3_id);

重要提示:请注意,尽管@Alp的解决方案可能正是您想要的:

(SELECT name FROM type1 WHERE type1_id=$type1_id)
UNION
(SELECT name FROM type2 WHERE type2_id=$type2_id);
UNION
(SELECT name FROM type3 WHERE type3_id=$type3_id);
例如,如果
$type1\u id
等于
$type2\u id
,它将删除可能找到的任何重复项。如果要完全选择所有结果(包括重复行),则应运行以下操作(删除不必要的括号):


如果查询不相关,并且它们服务于不同的目的,并且无法将它们组合在一起,那么就可以了。除非您仅使用
名称
SELECT name FROM type1 WHERE type1_id=$type1_id
UNION ALL
SELECT name FROM type2 WHERE type2_id=$type2_id
UNION ALL
SELECT name FROM type3 WHERE type3_id=$type3_id;