将两个查询合并为一个?
Combine Two Queries into One?
我有一个 MySQL 查询,它从 subscribe
table.
中的某个用户中选择所有 audioids
然后我有另一个查询,它获取 audioids
的列表并将它们与名为 audioposts
的 table 中名为 opids
的字段进行匹配。然后它从 audioposts
table 中选择 titles
并在 userid
.
中加入来自 users
table 的用户
有没有办法将这两个查询变成一个查询?
query1 = "SELECT audioid FROM subscribe WHERE userid = $userid";
query2 = "SELECT ap.audioid, ap.title, us.name FROM audioposts ap
INNER JOIN audioposts a2 ON a2.audioid = ap.opid
INNER JOIN users us ON us.id = a2.userid
WHERE ap.opid = $newaudio";
这是我想用一个查询替换的当前两个查询代码。我还没有将其翻译成准备好的陈述,因为我更容易以老式的方式将其形象化。另外,无论如何我最终都会将其转换为 NodejS;
$selectaudioid = "SELECT audioid FROM subscribe WHERE userid = $userid";
$audioResult=$dblink->query($selectaudioid);
if ($audioResult->num_rows>0) {
while ($row = $audioResult->fetch_assoc()) {
$newaudio = $row[audioid];
$getallaudio = "
SELECT ap.audioid, ap.title, us.name FROM audioposts ap
INNER JOIN audioposts a2 ON a2.audioid = ap.opid
INNER JOIN users us ON us.id = a2.userid
WHERE ap.opid = $newaudio AND ap.opid <> '0'";
$getallresult = $dblink->query($getallaudio);
if ($getallresult->num_rows>0) {
while ($row = $getallresult->fetch_assoc()) {
$dbdata[]=$row;
}}}}
只需使用 subscribe
添加另一个连接。
SELECT ap.audioid, ap.title, us.name
FROM audioposts ap
INNER JOIN audioposts a2 ON a2.audioid = ap.opid
INNER JOIN subscribe s ON s.audioid = ap.opid
INNER JOIN users us ON us.id = a2.userid
WHERE s.userid = $userid AND ap.opid <> '0'
我有一个 MySQL 查询,它从 subscribe
table.
audioids
然后我有另一个查询,它获取 audioids
的列表并将它们与名为 audioposts
的 table 中名为 opids
的字段进行匹配。然后它从 audioposts
table 中选择 titles
并在 userid
.
users
table 的用户
有没有办法将这两个查询变成一个查询?
query1 = "SELECT audioid FROM subscribe WHERE userid = $userid";
query2 = "SELECT ap.audioid, ap.title, us.name FROM audioposts ap
INNER JOIN audioposts a2 ON a2.audioid = ap.opid
INNER JOIN users us ON us.id = a2.userid
WHERE ap.opid = $newaudio";
这是我想用一个查询替换的当前两个查询代码。我还没有将其翻译成准备好的陈述,因为我更容易以老式的方式将其形象化。另外,无论如何我最终都会将其转换为 NodejS;
$selectaudioid = "SELECT audioid FROM subscribe WHERE userid = $userid";
$audioResult=$dblink->query($selectaudioid);
if ($audioResult->num_rows>0) {
while ($row = $audioResult->fetch_assoc()) {
$newaudio = $row[audioid];
$getallaudio = "
SELECT ap.audioid, ap.title, us.name FROM audioposts ap
INNER JOIN audioposts a2 ON a2.audioid = ap.opid
INNER JOIN users us ON us.id = a2.userid
WHERE ap.opid = $newaudio AND ap.opid <> '0'";
$getallresult = $dblink->query($getallaudio);
if ($getallresult->num_rows>0) {
while ($row = $getallresult->fetch_assoc()) {
$dbdata[]=$row;
}}}}
只需使用 subscribe
添加另一个连接。
SELECT ap.audioid, ap.title, us.name
FROM audioposts ap
INNER JOIN audioposts a2 ON a2.audioid = ap.opid
INNER JOIN subscribe s ON s.audioid = ap.opid
INNER JOIN users us ON us.id = a2.userid
WHERE s.userid = $userid AND ap.opid <> '0'