Sql 是否可以使用SELECT*FROM table_name,其中列_name='value'可能出现在多行中?
我试图创建一个屏幕,显示从特定客户处购买的历史记录。我的“销售”表包含TicketNumber、CustomerID、InventoryNo、Description、Cost、Retail、IndividualSubTotal、IndividualTax、IndividualTotal、SaleSubTotal、SaleTax和SaletTotal列 在本屏幕中,我只需要现在的TicketNumber、CustomerID、InventoryNo、Retail、IndividualTax和IndividualTotal 现在,我正试图通过客户ID获取信息。我的最终目标是将票号放在表中,但我只希望它出现一次。我想我会明白的。但现在,这就是我面临的问题Sql 是否可以使用SELECT*FROM table_name,其中列_name='value'可能出现在多行中?,sql,jtable,h2,Sql,Jtable,H2,我试图创建一个屏幕,显示从特定客户处购买的历史记录。我的“销售”表包含TicketNumber、CustomerID、InventoryNo、Description、Cost、Retail、IndividualSubTotal、IndividualTax、IndividualTotal、SaleSubTotal、SaleTax和SaletTotal列 在本屏幕中,我只需要现在的TicketNumber、CustomerID、InventoryNo、Retail、IndividualTax和Ind
try {
Class.forName("org.h2.Driver");
Connection connection = DriverManager.getConnection("jdbc:h2:./RetailApplicationDatabase;AUTO_SERVER=TRUE");
String sql;
Statement stmt;
sql = "SELECT distinct TicketNumber FROM Sales WHERE CustomerID = '" + CustomerNoNumberLabel.getText() + "';";
stmt = connection.createStatement();
ResultSet results = stmt.executeQuery(sql);
DefaultTableModel model = (DefaultTableModel) TicketNumberTable.getModel();
String TicketNumber;
while(results.next()) {
TicketNumber = results.getString("TicketNumber");
model.insertRow(TicketNumberTable.getRowCount(), new Object[] {TicketNumber});
}
} catch (SQLException | ClassNotFoundException ex) {
Logger.getLogger(ViewHistoryDialog.class.getName()).log(Level.SEVERE, null, ex);
}
如您所见,虽然有更多的结果,但我希望继续在表中插入一行。CustomerID将出现在客户拥有的尽可能多的不同项目和票号中
当我编译程序时,我在输出日志中没有得到错误,但是我没有看到任何东西被放入表中。我想这可能是我试图按的顺序,所以现在,我在这个对话框上有一个按钮,上面写着加载,当按下这个按钮时,上面的代码就会运行
我的问题在哪里?为什么我没有看到任何东西被添加到表中
提前感谢您提供的任何有用的回复
编辑2015年1月28日-MST上午8:03:销售已添加到数据库中的“销售”表中。假设客户购买了库存编号1、2和3,并且他们是第一个购买的客户,因此票号为1。对于每个库存编号,“销售”表中添加了三行,TicketNumber列在所有三行中的值均为“1”。然后,我尝试检索此信息并将其显示在jTable中。我想在jTable TicketNumber表中显示票号。但是我的结果集没有检索票号
编辑2015年1月28日-MST上午8:11:我将代码更改为为为TicketNumber引入不同的值。但是,这不是我主要关心的问题,因为我仍在努力获取结果集以检索信息。关于只插入一次票证号,您的问题有点模糊。这是否意味着针对特定客户?还是面向所有客户?如果是后者,则应将其作为TicketNumber表上的唯一约束强制执行 其次,您可以在单个语句中执行select和insert。不需要运行多个查询和循环。比如:
INSERT INTO TicketNumberTable(TicketNumber)
SELECT distinct TicketNumber
FROM Sales
WHERE CustomerID = '. . .';
或许:
INSERT INTO TicketNumberTable(TicketNumber)
SELECT distinct TicketNumber
FROM Sales
WHERE TicketNumber NOT IN (SELECT TicketNumber FROM TicketNumberTable) AND
CustomerID = '. . .';
哇,我决定了这个问题。。。没有人能看到它。。。我直接在H2控制台中执行了SQL查询。当表格显示时,我注意到CustomerNo列的数字前有一个空格。这是因为我使用了一个子字符串来提取客户编号,子字符串被关闭了一个字符,即空格。如果我没有深入研究并开始分析,我永远不会注意到它
谢谢所有帮助过我的人。保重。对不起,我不清楚。销售已添加到数据库中的“销售”表中。假设客户购买了库存编号1、2和3,并且他们是第一个购买的客户,因此票号为1。对于每个库存编号,“销售”表中添加了三行,TicketNumber列在所有三行中的值均为“1”。然后,我尝试检索此信息并将其显示在jTable中。我想在jTable TicketNumber表中显示票号。但是我的结果集没有检索票号。@RyanShukis。select distinct查询应该可以解决一半关于不获取重复项的问题。我不确定jtable部分。好的,我更改了代码。但是我仍然没有在我的jTable中看到任何东西。这是我目前的主要问题。不过,谢谢你的帮助。