Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否可以使用SELECT*FROM table_name,其中列_name='value'可能出现在多行中?_Sql_Jtable_H2 - Fatal编程技术网

Sql 是否可以使用SELECT*FROM table_name,其中列_name='value'可能出现在多行中?

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

我试图创建一个屏幕,显示从特定客户处购买的历史记录。我的“销售”表包含TicketNumber、CustomerID、InventoryNo、Description、Cost、Retail、IndividualSubTotal、IndividualTax、IndividualTotal、SaleSubTotal、SaleTax和SaletTotal列

在本屏幕中,我只需要现在的TicketNumber、CustomerID、InventoryNo、Retail、IndividualTax和IndividualTotal

现在,我正试图通过客户ID获取信息。我的最终目标是将票号放在表中,但我只希望它出现一次。我想我会明白的。但现在,这就是我面临的问题

    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中看到任何东西。这是我目前的主要问题。不过,谢谢你的帮助。