2017-02-02 7 views
2
MenuID PreMenuID Type 
P2000 BS02  p 
P8001 P2000  x 

Привет эксперты У меня есть таблица структуры, приведенная выше, которая указывает id меню как основной идентификатор и PremenuId Указывает предыдущее меню, из которого передается вызов.Sql Запрос, чтобы получить счет из другой строки

Теперь type=x означает, что есть исключение при вызове

из приведенных выше таблиц menuid=p8001 трансфертные из P2000, как показано на premenuid

я хочу, чтобы получить количество исключения, генерируемое в таблице, но в mainId

выход должен быть smthng как тыс

MenuID Exception OnId 
p2000  1  p8001 

Спасибо.

+1

Пожалуйста, форматировать таблицы схемы, и показать нам минимальные выборочные данные и ожидаемый результат. – McNets

+0

Может 'P2000' быть в нескольких' MenuID'? Значит, может ли существовать еще одна строка? 'P8002 P2000 x' – Viki888

+0

@ashish jayara вы можете попробовать мои ans –

ответ

1

Если я получаю ваши требования в порядке, просто group by -Statement сделает работу:

select PreMenuID as `MenuID`, count(Type) as `Exception`, MenuID as `OnID` 
    where Type = x 
    group by `MenuID`, `OnID` 
+0

Hoffmann Спасибо, что работает ... –

0

Вам нужно соединить таблицу с собой.

select a.MenuID, count(b.MenuID) as Exception, group_concat(b.MenuID) as OnID 
from tableName as a 
join tableName as b on a.MenuID=b.MenuID 
where a.type='x' 
+1

Не нужно ли поле« Тип »? Что-то вроде 'where Type = 'x'' ... –

+1

Также я хотел бы использовать' join tableName как b в синтаксисе a.MenuID = b.MenuID', а не давать условие соединения в where-clause. Преимущество 'join ... on ...' -syntax состоит в том, что вы заметите, что условие отсутствует, и тогда не будет выполняться перекрестное соединение. –

+0

@ RenéHoffmann благодарит за ваше замечание, я спешил, поэтому я ошибся –

 Смежные вопросы

  • Нет связанных вопросов^_^