[英]Sql query from one table and to query another table with result from first query table
不确定标题对我想要实现的目标是否有意义。
我有2个表,一个叫做customer_details,另一个是repair_details。 我正在查询数据库以使用do直到rs.EOF来从repair_details加载一些信息,在此内部,我想使用其中一个字段查询另一张表以报告用户是否已付款:
我的代码是这样的(在vbscript中)
<%
strSQL = "SELECT * FROM repair_details WHERE repair_progress = 0 ORDER BY id asc"
Set rs = conn.Execute(strSQL)
If rs.EOF Then
booking_code ="None"
serial = "None"
fault = "None"
status = "None"
Else
do until rs.EOF
ID = rs("cust_id")
booking_code = rs("booking_code")
serial = rs("serial")
fault = rs("fault")
status = rs("status")
%>
<tbody>
..... rest of my page
现在,在customer_details内部,我有一列叫做cust_id,还有另外一列叫做pay_needed。
我想运行第一个查询(repair_details),并在运行它时,查看customer_details的内部,如果在pay_needed下报告为yes,则将其存储为payment_needed。 在我的代码我的下面,写这篇文章来强调谁需要付款:
If payment_needed = "Yes" Then%>
<td nowrap><font color=#FF0000><%=booking_code%></font></td>
<%Else%>
<td nowrap><%=booking_code%></td>
<%End If%>
这是我写的内容,当然不起作用,我知道有一种更简单的方法,但它超出了知识范围。
<%
strSQL = "SELECT * FROM repair_details WHERE repair_progress = 0 ORDER BY id asc"
Set rs = conn.Execute(strSQL)
If rs.EOF Then
booking_code ="None"
serial = "None"
fault = "None"
status = "None"
Else
do until rs.EOF
ID = rs("cust_id")
booking_code = rs("booking_code")
serial = rs("serial")
fault = rs("fault")
status = rs("status")
%>
<tbody>
<tr>
<%
strSQL1 = "SELECT payment_needed FROM customer_details WHERE cust_id = '" & ID & "'"
Set rs = conn.Execute(strSQL1)
payment_needed = rs("payment_needed")
If payment_needed = "Yes" Then%>
<td nowrap<font color=#FF0000><%=booking_code%></font></td> <%Else%>
<td nowrap><%=booking_code%></td>
<%End If%>
</tr>
</tbody>
<%
rs.MoveNext
loop
End if
rs.Close
%>
提前致谢
试试这个查询:
SELECT RD.cust_id, RD.booking_code, RD.serial, RD.fault, RD.[status], CD.payment_needed
FROM repair_details RD
INNER JOIN customer_details CD ON CD.cust_id = RD.cust_id
它会为所有repair_details字段执行循环中的操作。 您将不再需要第二个查询(strSQL1)。
然后,您只需要从那里阅读所有内容:
ID = rs("cust_id")
booking_code = rs("booking_code")
serial = rs("serial")
fault = rs("fault")
status = rs("status")
payment_needed = rs("payment_needed")
如果要显示来自repair_details的所有行,而无需考虑有效的cust_id:
SELECT RD.cust_id, RD.booking_code, RD.serial, RD.fault, RD.[status], COALESCE(CD.payment_needed,'') AS payment_needed
FROM repair_details RD
LEFT OUTER JOIN customer_details CD ON CD.cust_id = RD.cust_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.