对于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'];
做我正在做的事情会更好吗?单独查询所有内容,或者有没有办法将所有这些内容压缩成一个查询?
谢谢, 杰森
答案 0 :(得分:0)
如果您只需要每个表的name
列,则可以使用SELECT UNION
查询:
(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);
答案 1 :(得分:0)
重要提示:考虑到虽然@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_id
等于$type2_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;