2016-09-29 3 views
0

МОЕЙ ПРОБЛЕМУ

Я соединяющий 2 таблицы ... Nav & subnavLEFT JOIN, потянув только один результат

только один результат показывает из subnav, когда оно должно быть 2 или более результатов.

Вы можете просмотреть мою проблему здесь: http://aquiestoy.mx/demo/tempone/indexnew.php (верхний серый Accordian меню)

МОЙ КОД

SELECT nav.name AS name, 
nav.href, 
nav.nav_id, 
subnav.name AS subname, 
subnav.nav_id AS parent 

FROM nav LEFT OUTER JOIN subnav 
ON nav.nav_id = subnav.nav_id 

GROUP BY nav.name 
ORDER BY nav.position, subnav.position 

МОИ ТАБЛИЦЫ

Table Name "NAV" 
+-------------+-------------+---------+----------+-----------+ 
| nav_id  | name  | href | position | client_id | 
+-------------+-------------+---------+----------+-----------+ 
| 10   | Home  | home | 11  | 56  | 
| 11   | Products | about | 11  | 56  | 
| 12   | Promotions | about | 11  | 56  | 
| 13   | two   | about | 11  | 56  | 
+-------------+-------------+---------+----------+-----------+ 

Table Name SUBNAV 
+-------------+--------+---------+----------+--------+-----------+ 
| subnav_id | name | href | position | nav_id | client_id | 
+-------------+-------------+---------+----------+---+-----------+ 
| 1   |  | page | 1  | 11  | 56  | 
| 2   | Page1 | page | 2  | 11  | 56  | 
| 3   | Page2 | page | 3  | 11  | 56  | 
| 4   | Page3 | page | 4  | 11  | 56  | 
+-------------+--------+---------+----------+--------+-----------+ 

Как вы можете видеть, что это тянет

+0

да должно быть nav_id в SUBNAV таблице –

+0

фиксированной, что я забыл добавить, что раздел - но таблица имеет NAV_ID –

+0

Возможно, вы захотите включить некоторые из ваших php-кодов, связанных с меню HTML. – segFault

ответ

1

Ваш GROUP BY nav.name является ли kely виновником здесь. Он группирует все результаты в этом поле, поэтому все элементы дочернего/вспомогательного навигатора с тем же основным навигационным именем будут объединены в один результат с данными из последней записи в этой строке.

Возможно, вам придется сгруппировать по другому полю или вообще не группировать, если это возможно.

Это потребует повторной записи цикла визуализации навигации для обработки новой структуры данных, так как теперь у вас будет каждый элемент суб-навигатора.


Другой вариант - разбиение запросов на подзапросы для каждого элемента суб-навигатора.

Что-то вроде:

SELECT 
    nav.name, 
    nav.href, 
    nav.nav_id 
FROM nav 
ORDER BY nav.position 

Затем цикл по каждому результату от того и выполнить:

SELECT 
    subnav.name, 
    subnav.nav_id AS parent 
FROM subnav 
WHERE subnav.nav_id = 11 // Or the current parent nav_id 
ORDER BY subnav.position 
+0

hey sebastianForsberg, пожалуйста, зайдите в мой профиль и помогите мне в моем последнем вопросе.please –

+0

Когда я удаляю GROUP BY, он отображает 2 основных строки NAV ... когда он должен показывать только 1 –

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