2014-11-02 2 views
0

CategoriesКак реализовать внутреннее соединение на себя зависимой таблице

1 | Pen  | 3 
2 | Book  | 3 
3 | Education | null 
4 | Shirt  | null 

Product

1 | 10.00 | Parker-Pen | the description | 1000 | 1 
2 | 35.00 | Dairy  | the description | 500 | 2 
3 | 9.00 | Dux-Pen  | the description | 1000 | 1 
4 | 350.00 | GeographyMap | the description | 30 | 3 
4 | 250.00 | PoloShirt | the description | 100 | 4 

Эти таблицы, которые я фактически извлекая продукт которого идентификатор категории 3.

Здесь это запрос, который я использовал для извлечения данных.

select p.name, c.name 
from product p 
    inner join Categories c on p.Categories_id=c.id 
    inner join Categories c2 on c2.id=3 or c2.parent=3 

Фактически он извлекает данные, но в несколько раз. А также есть poloshirt, который не относится к категории id.

Можете ли вы объяснить мне, что это проблема, и то, что это лучший способ для классификации продукта

+0

Можете ли вы определить, каковы фактические столбцы данных? И каков ваш ожидаемый результат, потому что трудно понять, чего вы хотите достичь. – dotnetom

+0

Каков ваш ожидаемый результат –

+0

@Ganesh_Devlekar Я хочу получить продукт с идентификатором категории 3, а также те, чей идентификатор категории имеет родительский идентификатор 3 –

ответ

0

Если есть только один уровень иерархии позволил, вы должны получить ответ с таким запросом:

select p.name, c.name 
from product p 
    inner join Categories c on p.Categories_id=c.id 
where c.id=3 or c.parent=3 
+0

спасибо @dotnetom, но что я пропал без вести, вы можете это объяснить? –

+0

Вам не нужно второе соединение, потому что вы не проверяете какие-либо условия во второй таблице – dotnetom

+0

, как я могу получить иерархию с несколькими уровнями с этой таблицей, мне нужно изменить таблицу, или я могу получить ее через команду sql? –

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