Автор Тема: отцы и дети  (Прочитано 3988 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
отцы и дети
« : 26 Января 2004, 17:47:08 »
Есть таблица с полями - uid, parent_uid, name есть такой вопрос -

1. как одним запросом вывести всех отцов у которых есть дети. (грубо говоря пускай отцом будет тот у кого parent_uid=0)

2. как тем же одним запросом сделать тоже самое + вывести количество детей каждого отца


З.Ы. задача вроди простая... сказал друзьям - те думают :). Есть уже два варианта - но не очень... Первый с использованием запроса в запросе. Второй с использованием дополнительного поля в таблице.
Life is Good

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
отцы и дети
« Ответ #1 : 26 Января 2004, 17:57:25 »
варианты с изменением структуры не предлагать ?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
отцы и дети
« Ответ #2 : 26 Января 2004, 18:22:31 »
1.
SELECT t1.uid, t1.name, t1.parent_uid
FROM test t1, test t2
WHERE t1.parent_uid=0 && t1.uid=t2.parent_uid
GROUP BY t1.uid

2. по аналогии
0 OK, 0:1

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
отцы и дети
« Ответ #3 : 26 Января 2004, 18:40:23 »
в догонку

2.

SELECT t1.uid, t1.name, t1.parent_uid, count(t1.uid) as childs
FROM test t1, test t2
WHERE t1.parent_uid=0 && t1.uid=t2.parent_uid
GROUP BY t1.uid
0 OK, 0:1

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
отцы и дети
« Ответ #4 : 26 Января 2004, 18:44:46 »
ondr
а что это значит?
Цитировать
test t1, test t2

две таблицы? или... пожалуйста обьясни.
Life is Good

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
отцы и дети
« Ответ #5 : 26 Января 2004, 18:59:41 »
t1,t2 это псевдонимы для одной и той же таблицы test

У меня сейчас инет отвратительный (эта страница открывалась минуту), поищи сам здесь
http://www.mysql.ru/docs/man/
0 OK, 0:1

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
отцы и дети
« Ответ #6 : 26 Января 2004, 19:02:42 »
Макс
неа
Life is Good

Оффлайн Enemy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 204
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.lutsiv.com
отцы и дети
« Ответ #7 : 26 Января 2004, 19:18:20 »
ondr
спасибо.
Life is Good

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28