我需要一些帮助写入ASP从SQL获取数据。
我有3张桌子 - PC,Monitor&即监视器。 Monitor2表是Monitor表的精确克隆,包括数据。 (不要问我为什么,在我的时间之前完成)PC表中使用的列 PC_ID,名称(加上其他几个但在这里不相关)
Monitor&中的列Monitor2表 Monitor_ID,名称,大小,PC_ID,制作,mNotes
基本上我需要拉取结果来填充一个表,该表显示哪个PC.Name具有哪个Monitor.Name,Monitor2.Name和其他属性。
例如
| PC Name | Monitor 1 | Monitor 2 | Other 1 | Other 2 |
---------------------------------------------------------------
| PC254 | M133 | M176 | 27 | 27 |
这是我到目前为止所拥有的
sqlq = "SELECT PC.PC_ID, PC.PC_Name, PC.CPU, PC.RAM, PC.Make, PC.Model, PC.Date, Monitor2.Name as mon_name2, Monitor2.Size as mon_size2, Monitor.Name as mon_name, Monitor.Size as mon_size FROM Monitor right JOIN PC ON Monitor.PC_ID = PC.PC_ID FROM Monitor2 right JOIN PC ON Monitor2.PC_ID = PC.PC_ID
set rs = conn.execute(sqlq)
if rs.eof or rs.bof then
response.write("No Records Found")
else
'count how many records have been returned
count=0
rs.movefirst
pcname=""
do while not rs.eof
if pcname <> rs("PC_Name") then
count=count+1
end if
pcname=rs("PC_Name")
rs.movenext
loop
Response.write("<font size='2'>No. of records returned:" & count & " </font>")
rs.movefirst
pcname=""
%>
<%if not PrintF then %>
然后得到像
这样的输出<%do while not rs.eof
if pcname <> rs("PC_Name") then
%>
<tr>
<td style="width: 96px"><a href="PCView.asp?PC=<%=rs("PC_ID")%>"><font size="1"><%=rs("PC_Name")%></font></a></td>
<td><a href="PCView.asp?PC=<%=rs("PC_ID")%>"><font size="1"><%=rs("Name")%></font></a></td>
<td style="width: 99px"><font size="1"><%=rs("mon_name")%></font></td>
<td style="width: 99px"><font size="1"><%=rs("mon_name2")%></font></td>
<td><font size="1"><%=rs("mon_size")%></font></td>
<td><font size="1"><%=rs("mon_size2")%></font></td>
</tr>
<%
end if
pcname=rs("PC_Name")
rs.movenext
loop%>
但是到目前为止我无法绕过
Microsoft OLE DB Provider for SQL Server error '80040e14'
Incorrect syntax near the keyword 'FROM'.
/PCs/SearchResult.asp, line 31
如果不是那样的话我会得到类似的东西 &#34;多部分标识符&#34; Monitor2.Name&#34;无法受约束。&#34; 或其他一些不正确的语法错误。
为任何帮助干杯
答案 0 :(得分:2)
你有
FROM Monitor right JOIN PC ON Monitor.PC_ID = PC.PC_ID FROM Monitor2
取出第二个FROM
.. FROM Monitor2
这将离开你
SELECT PC.PC_ID,
PC.PC_Name,
PC.CPU,
PC.RAM,
PC.Make,
PC.Model,
PC.Date,
Monitor2.Name AS mon_name2,
Monitor2.Size AS mon_size2,
Monitor.Name AS mon_name,
Monitor.Size AS mon_size
FROM Monitor
RIGHT JOIN PC ON Monitor.PC_ID = PC.PC_ID
RIGHT JOIN PC ON Monitor2.PC_ID = PC.PC_ID
这没有意义,也是不正确的。我认为你正试图做这样的事情
SELECT PC.PC_ID,
PC.PC_Name,
PC.CPU,
PC.RAM,
PC.Make,
PC.Model,
PC.Date,
Monitor2.Name AS mon_name2,
Monitor2.Size AS mon_size2,
Monitor.Name AS mon_name,
Monitor.Size AS mon_size
FROM PC
LEFT JOIN Monitor ON Monitor.PC_ID = PC.PC_ID
LEFT JOIN Monitor2 ON Monitor2.PC_ID = PC.PC_ID
如果您在Monitor或Monitor2中为一个PC_ID有多个记录,您将获得欺骗。