我正在研究一个项目,我正试图从数据库中获取回报。我是网页设计和ASP.net的新手,所以我不确切地知道如何说出我的问题,但我会尽力解释它。我有一个返回authorID的下拉列表,我试图用它在屏幕上显示信息。
这里我正在使用的所有表格(第一行将是表格的标题,数据名称下方的点数与*语句中的*表示,以帮助可视化)
Authors:
authorID
* firstName
* lastName
AuthorISBN:
ISBN
authorID
Titles:
* ISBN
* title
* editionNumber
description
publisherID
copyright
imageFile
* price
Publishers:
publisherID
* publisherName
到目前为止,我在SELECT语句中得到了什么。
SELECT Authors.firstName, Authors.lastName, Titles.ISBN, Titles.title,
Publishers.publisherName, Titles.price, Titles.editionNumber
FROM (((Authors INNER JOIN AuthorISBN ON Authors.authorID =
AuthorISBN.authorID) INNER JOIN Titles ON AuthorISBN.ISBN =
Titles.ISBN) INNER JOIN Publishers ON Titles.publisherID =
Publishers.publisherID)
现在在以前的一个项目中遇到了与我使用过的类似问题(但只有一个表)
WHERE (CategoryID = @CategoryID)
然后asp.net弹出另一个窗口让我选择输入源;但是这个任务没有编译
WHERE (authorID = @authorID)
因为authorID在多个表中。我不知道语法如何或确切地如何工作来做我想做的事情。如果它的相关性,下拉列表ID是ddlAuthors,它从Authors表中返回值authorID。
感谢任何花时间阅读或回复的人。
答案 0 :(得分:0)
由于有几个表具有相同的列,因此对于要应用此过滤器的表格存在歧义。
要解决此问题,您可以指定表名。列名以消除此歧义。
在您的情况下,如果这是您想要应用过滤器的表,请使用Authors.authorid = @authorid
答案 1 :(得分:0)
SELECT a.firstName, a.lastName, t.ISBN, t.title,
p.publisherName, t.price, t.editionNumber
FROM Authors a, AuthorISBN aisbn, Titles t, Publishers p
WHERE a.authorID = aisbn.authorID
AND a.authorID = ${your author ID from the dropdown}
AND aisbn.ISBN = t.ISBN
AND t.publisherID = p.publishedID
如果您对长INNER JOIN有任何问题,这是一种更简单的理解方法(最好将SQL分开,以便您可以更好地阅读它并确保您加入您想要的内容/位置)。如果以上工作,请告诉我。我可能没有回答你关于传递参数部分的问题(在这种情况下我误解了你的问题)。如果这不能回答这个问题,请告诉我,因为这是基本的SQL(我不熟悉asp.net)。