ПРИМЕЧАНИЕ. Вам нужно добавить 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();
}
}
}
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
необходимо было бы, вероятно, использовать 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
Сделайте 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