Выберите запрос в MySQL - PullRequest
       6

Выберите запрос в MySQL

2 голосов
/ 26 октября 2010

Две таблицы

Table1

ID FileName

1  abc
2  abc
3  abc
4  xyz

Table2

ID Table1_ID isDeleted
1   1        1
2   2        1
3   3        0
4   4        0

Мне нужно получить счетчик имени файла для isDeleted = 1, передав любой идентификатор table1то есть для всех значений (1,2,3) идентификатора, мне нужно считать как 2

Я пытался с помощью следующего запроса

SELECT COUNT(t1.FileName) FROM Table1 t1 
LEFT OUTER JOIN Table1 t11 ON t1.FileName=t11.FileName 
INNER JOIN table2 t2 ON t2.Table1_ID =t1.ID AND t2.isDeleted=1
WHERE t1.ID=X; 

X-1,2,3

Это всегда возвращает 3.

Редактировать: Мне нужно получить счетчик имени файла из первой таблицы, передав идентификатор из первой таблицы.Количество должно основываться на столбце isdeleted во второй таблице.Таблицы связаны идентификатором столбца (table1) и Table1_ID (table2)

Ответы [ 3 ]

4 голосов
/ 26 октября 2010

Дайте этому шанс:

select SUM(isDeleted)
from Table2 
where Table1_ID in (
  select ID from Table1
  where FileName = (select FileName
                    from Table1
                    where ID = 1)
)

Редактировать: чтобы получить количество файлов:

select count(*) 
from Table1 a
join Table2 b on a.ID = b.Table1_ID and b.isDeleted = 1
where a.FileName = (select FileName
                   from Table1
                   where ID = 1)
0 голосов
/ 26 октября 2010

Это работает для меня:

declare @id int
set @id = 1 /*Or 2 or 3 or 4, etc.*/

select sum(isdeleted)
from table2
where table1_id in 
    (select id 
    from table1 
    where filename = (select filename 
                      from table1 
                      where id = @id))

Редактировать: я не вижу, чем это отличается от ответа Фоско.

0 голосов
/ 26 октября 2010
SELECT COUNT(t1.FileName) FROM Table1 t1 
INNER JOIN table2 t2 ON t2.Table1_ID =t1.ID AND t2.isDeleted=1
WHERE t1.ID=X; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...