Оператор MySQL, комбинирующий соединение и количество?

Простая Java-программа, которая подключается к SQL Server.

ПРИМЕЧАНИЕ. Вам нужно добавить sqljdbc.jar в путь сборки

// localhost: локальный компьютер выступает в роли сервера

// 1433: номер порта по умолчанию для SQL

// имя пользователя: sa

// пароль: используйте пароль, который используется во время установки SQL серверная студия управления. В моем случае это «root»

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

    public class Conn {
        public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {

            Connection conn=null;
            try {
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
                conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=company", "sa", "root");

                if(conn!=null)
                    System.out.println("Database Successfully connected");

            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
    }
26
задан GregD 28 February 2009 в 17:35
поделиться

3 ответа

SELECT  fol.*
 ,      (       SELECT  COUNT(*)
                FROM    files           fil
                WHERE   fil.Folder      = fol.Folder
        )       AS      "Files"
FROM    folders         fol
WHERE   fol.userId      = 16

Это назвало связанный подзапрос.

http://dev.mysql.com/doc/refman/5.1/en/correlated-subqueries.html

52
ответ дан jennykwan 15 October 2019 в 07:17
поделиться

необходимо было бы, вероятно, использовать GROUP BY и сгруппировать его идентификатором или таким:

SELECT 
    folders.*,
    COUNT(files.*) as filetotal 
FROM folders 
    LEFT JOIN files ON folders.ID=files.folderID 
WHERE userId = 16 
GROUP BY folders.ID
15
ответ дан TheTXI 15 October 2019 в 07:17
поделиться

Сделайте sub запрашивает, что группы Папками для получения количества на папку затем соедините его с первым запросом как это:

    select
       f.*
       fc.Files
    from
       Folders f
--
       -- Join the sub query with the counts by folder     
       JOIN (select
               Folder,
               count(*) Files
             from
                files
             group by
                Folder ) as fc
          on ( fc.Folder = f.Folder )
    where
       f.userid = 16
4
ответ дан Tim Cooper 15 October 2019 в 07:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: