Например, есть две связанные таблицы:
Таблица RAZDEL:
IDraz
namer
и таблица CATEGORY:
IDcat
IDraz
namec
Можно-ли без вложенного цикла while вывести информацию из БД в таком виде:
razdel_1
cat_11
cat_12
razdel_2
cat_21
cat_22
И как это вообще правильно делается, есть же стандартный алгоритм??
Спустя 8 минут, 26 секунд (17.03.2009 - 17:14) sergeiss написал(а):
Где-то примерно так...
SQL |
select razdel.namer, category.namecб razdel.idraz from (select namer, idraz from razdel) razdel, (select namec, idraz, idcat from category) category where razdel.idraz=category.idraz order by category.idraz, category.idcat |
PS. А уже при выводе данных (в одном-единственном цикле) контролировать: если индекс раздела сменился, то выводим имя раздела; иначе - имя категории.
Спустя 1 час, 7 минут, 45 секунд (17.03.2009 - 18:22) Alchemist написал(а):
Один вопрос... Вот это:
SQL |
...from (select namer, idraz from razdel) razdel, (select namec, idraz, idcat from category) category... |
это замена обычному
SQL |
...from razdel, category... |
?
Спустя 13 минут (17.03.2009 - 18:35) amberlx написал(а):
Вот, я сделел так:
PHP |
$res = mysql_query(" |
только если есть раздел а в нем нет категории, то имя раздела не показывается (его, я так понял, нет в запросе, что-ли?)
Спустя 7 минут, 54 секунды (17.03.2009 - 18:43) amberlx написал(а):
блин, надо заменить INNER JOIN
на LEFT OUTER JOIN, тогда нормально, спасибо
на LEFT OUTER JOIN, тогда нормально, спасибо
Спустя 3 часа, 48 минут, 24 секунды (17.03.2009 - 22:31) sergeiss написал(а):
Цитата (Alchemist @ 17.03.2009 - 18:22) | ||||
Один вопрос... Вот это:
это замена обычному
? |
Хм... Интересный вопрос
Да, я тут погорячился немного. Я просто как раз незадолго до этого мудрил со сложными запросами из объемных таблиц, в которых сначала надо сделать подвыборку по нужным колонкам и ограничить количество строк какими-то условиями, чтобы не выбирать сотни тысяч строк, а ограничиться только несколькими тысячами или даже сотнями.
Вот и тут написал в том же духе
Естественно, достаточно было именно так
SQL |
...from razdel, category... |