[英]Can I use a subquery's result as well?
我有2張桌子:
廣告:字段ID
, A
, B
和C
:
+----+---+-------+------+
| ID | A | B | C |
+----+---+-------+------+
| 1 | x | y | z |
| 2 | c | v | b |
| 3 | n | n | m |
+----+---+-------+------+
請求:字段ID
, AdID
和Status
:
+----+------+----------+
| ID | AdID | Status |
+----+------+----------+
| 3 | 1 | approved |
| 4 | 2 | pending |
| 5 | 3 | rejected |
+----+------+----------+
ID
(來自Ads
)= AdID
(來自Requests
)。
我有查詢:
SELECT * FROM Ads WHERE ID IN (SELECT AdID FROM Requests WHERE Status = 'approved' OR Status = 'rejected')
這使我獲得了Ads
ID為1
和3
的行。 現在我的問題是,我是否也可以使用子查詢中的“批准”或“拒絕”?
那么有沒有辦法我可以說:
$sql="SELECT * FROM Ads WHERE ID IN (SELECT AdID FROM Requests WHERE Status = 'approved' OR Status = 'rejected')";
$result=mysqli_query($con, $sql);
while($row = mysqli_fetch_assoc($result)) {
echo $row['Status']; //<--- doesn't work right now. Want it to say 'approved'/'rejected'
}
它有效嗎?
查詢中的where ... in
基本上是一個過濾器。 您可以對過濾聯接執行相同的操作:
SELECT *
FROM Ads a
JOIN Requests r
ON a.ID = r.AdID
WHERE r.Status in ('approved', 'rejected')
與where ... in
過濾器不同, inner join
過濾器在結果中包括來自另一個表的列。
它應該給你一個錯誤。 您只選擇了表格廣告,沒有狀態列。 乍一看,如果您不需要其他列,則可以查詢表Requests
Select /*Distinct*/ /*Adid, */ Status from Requests
WHERE Status = 'approved' OR Status = 'rejected'
如果您還需要廣告中的一些列,請加入
Select a.Id, a.A,R.Status
from Ads a inner join Requests r on a.ID=r.AdId
WHERE Status = 'approved' OR Status = 'rejected'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.