Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите составить запрос 
:(
    Опции темы
mixas
Дата 12.1.2009, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.6.2007

Репутация: нет
Всего: нет



есть 2 таблицы:
1. Cat
2. Cat_descr

в таблицах данные:
Код

Cat
-----------------------
cat_id | parent_id
-----------------------
1 | 0
2 | 1
3 | 1
4 | 1
5 | 0
6 | 5
7 | 5
8 | 5


Cat_descr
----------------------
cat_id | cat_name 
-----------------------
1 | имя
2 | света
3 | таня
4 | петя
5 | возраст
6 | 20
7 | 25
8 | 26


нужен вывод в форме:
имя света
имя таня
имя петя
возраст 20
возраст 25
возраст 26

не пойму, как такой запрос составить..
спасибо 

Это сообщение отредактировал(а) mixas - 13.1.2009, 01:42
PM MAIL   Вверх
Akina
Дата 12.1.2009, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Код

select c1.cat_name ,c2.cat_name 
from cat c
inner join cat_descr c1
  on c.cat_id = c1.cat_id
inner join cat_descr c2
  on c.parent_id = c2.cat_id



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mixas
Дата 12.1.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.6.2007

Репутация: нет
Всего: нет



да, спасибо!! работает! только на самом деле у меня задача сложнее, т.к. у меня тут большая вложенность категорий друг в друга (4 уровня), я думал, что смогу по аналогии остальное тоже вывести, но чё та не получается.

как мне составить запрос к таким таблицам:
Код

Cat
-----------------------
cat_id | parent_id
-----------------------
1 | 0
2 | 1
3 | 1
4 | 2
5 | 2
6 | 3
7 | 3
8 | 4
9 | 6
10 | 5
11 | 7
12 | 4
13 | 6
14 | 5
15 | 7



и т.д.

Код

Cat_descr
----------------------
cat_id | cat_name 
-----------------------
1 | год
2 | 2000
3 | 2001
4 | Света
5 | Таня
6 | Света
7 | Таня
8 | 69
9 | 72
10 | 56
11 | 59
12 | 174
13 | 174
14 | 162
15 | 162


чтобы получилось:
Код

год 2000 Света 69
год 2000 Света 174
год 2000 Таня 56
год 2000 Таня 162
год 2001 Света 72
год 2001 Света 174
год 2001 Таня 59
год 2001 Таня 162


Это сообщение отредактировал(а) mixas - 13.1.2009, 01:11
PM MAIL   Вверх
Akina
Дата 12.1.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



А какая разница? подход тот же.





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mixas
Дата 13.1.2009, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.6.2007

Репутация: нет
Всего: нет



я понимаю, что подход тот же, но не получается (
Код

CREATE TABLE `cat` (
  `cat_id` int(11) NOT NULL,
  `parent_id` int(11) NOT NULL
)
INSERT INTO `cat` (`cat_id`, `parent_id`) VALUES (1, 0),
(2, 1),
(3, 1),
(4, 2),
(5, 2),
(6, 3),
(7, 3),
(8, 4),
(9, 6),
(10, 5),
(11, 7),
(12, 4),
(13, 6),
(14, 5),
(15, 7);


CREATE TABLE `cat_descr` (
  `cat_id` int(11) NOT NULL,
  `cat_name` text NOT NULL
)
INSERT INTO `cat_descr` (`cat_id`, `cat_name`) VALUES (1, 'год'),
(2, '2000'),
(3, '2001'),
(4, 'Света'),
(5, 'Таня'),
(6, 'Света'),
(7, 'Таня'),
(8, '69'),
(9, '72'),
(10, '56'),
(11, '59'),
(12, '174'),
(13, '174'),
(14, '162'),
(15, '162');


если я добавляю ещё одну связь: 
Код

SELECT c2.cat_name, c1.cat_name, c3.cat_name
FROM cat c
INNER JOIN cat_descr c1 ON c.cat_id = c1.cat_id
INNER JOIN cat_descr c2 ON c.parent_id = c2.cat_id
INNER JOIN cat_descr c3 ON c.parent_id = c3.cat_id

то выходит ерунда какая то:
Код

cat_name    cat_name    cat_name 
год    2000    год
год    2001    год
2000    Света    2000
2000    Таня    2000
2001    Света    2001
2001    Таня    2001
Света    69    Света
Света    174    Света
Таня    56    Таня
Таня    162    Таня
Света    72    Света
Света    174    Света
Таня    59    Таня
Таня    162    Таня

PM MAIL   Вверх
Akina
Дата 13.1.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(mixas @  12.1.2009,  22:26 Найти цитируемый пост)
у меня тут большая вложенность категорий друг в друга (4 уровня), я думал, что смогу по аналогии остальное тоже вывести, но чё та не получается.

Рисуй связи! Карандашом, на бумаге... а то если делать по аналогии бездумно, всегда будешь получать ерунду.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mixas
Дата 13.1.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.6.2007

Репутация: нет
Всего: нет



так и не удалось нужный запрос составить, решил задачу средствами php
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.