Mysql i';m使用两个查询有没有办法使它成为一个查询
这是我的情况, 我正在从Mysql i';m使用两个查询有没有办法使它成为一个查询,mysql,sql,database,Mysql,Sql,Database,这是我的情况, 我正在从superadmin表中获取id,其中role=2 像这样 SELECT id FROM superadmin WHERE role='2' SELECT status FROM categorydata WHERE users='id' // above id on each iteration 假设我能得到10张唱片 id ---------------- 3 4 6 8 10 14
superadmin
表中获取id
,其中role=2
像这样
SELECT id FROM superadmin WHERE role='2'
SELECT status FROM categorydata WHERE users='id' // above id on each iteration
假设我能得到10张唱片
id
----------------
3
4
6
8
10
14
16
.
.
我需要像这样将它们传递到第二个表中
SELECT status FROM categorydata WHERE users='id' // above id on each iteration
以下是我的PHP代码:
$query_super_admin = $obj->queryAll("SELECT id FROM superadmin WHERE role='2'");
foreach($query_super_admin['results'] as $result){
$user_id = $result['id'];
$category_related = $obj->queryAll("SELECT status FROM categorydata WHERE users='".$user_id."'");
// result data
}
问题:我想用
sql实现这一点,这可能吗?您可以使用在(…)的何处:
您可以在(…)中使用,
:
试试这个:我认为在这种情况下,内部联接
的性能会更好
SELECT c.status
from superadmin s
inner join categorydata c on s.id = c.users
where s.role='2'
试试这个:我认为在这种情况下,内部联接
的性能会更好
SELECT c.status
from superadmin s
inner join categorydata c on s.id = c.users
where s.role='2'
以下查询将检索用户及其状态:
SELECT s.id, c.status
FROM superadmin s
LEFT JOIN categorydata c ON s.id = c.users
WHERE s.role = 2
ORDER BY s.id;
我使用左连接而不是像Suraz这样的内部连接,因为您可能对获取没有关联状态的用户感兴趣
然后在PHP中,要获得与初始代码相同的行为,可以执行以下操作:
$query = <<<EOQ
SELECT s.id, c.status
FROM superadmin s
LEFT JOIN categorydata c ON s.id = c.users
WHERE s.role = 2
ORDER BY s.id;
EOQ;
$query_super_admin = $obj->queryAll($query);
$cur_id = -1;
foreach($query_super_admin['results'] as $result) {
if ($result['id'] != $cur_id) {
// This is a new user id
// Do whatever you want here, like printing user id, name, etc.
$cur_id = $result['id'];
}
if (!$result['status']) {
continue; // No status associated to this user
}
// Do whatever you want here, like printing status
}
$query=以下查询将检索用户及其状态:
SELECT s.id, c.status
FROM superadmin s
LEFT JOIN categorydata c ON s.id = c.users
WHERE s.role = 2
ORDER BY s.id;
我使用左连接而不是像Suraz这样的内部连接,因为您可能对获取没有关联状态的用户感兴趣
然后在PHP中,要获得与初始代码相同的行为,可以执行以下操作:
$query = <<<EOQ
SELECT s.id, c.status
FROM superadmin s
LEFT JOIN categorydata c ON s.id = c.users
WHERE s.role = 2
ORDER BY s.id;
EOQ;
$query_super_admin = $obj->queryAll($query);
$cur_id = -1;
foreach($query_super_admin['results'] as $result) {
if ($result['id'] != $cur_id) {
// This is a new user id
// Do whatever you want here, like printing user id, name, etc.
$cur_id = $result['id'];
}
if (!$result['status']) {
continue; // No status associated to this user
}
// Do whatever you want here, like printing status
}
$query=