Нужен код для обработки БД

Статус
В этой теме нельзя размещать новые ответы.

Apocalypse

Take My Revolution
Регистрация
2 Июн 2007
Сообщения
304
Реакции
802
Народ, помогите разобраться:

В БД MySQL есть две таблицы.

Таблица 1 имеет вид:
Код:
Колонка 1•••Колонка 2•••Колонка 3
1•••0•••Имя 1
2•••0•••Имя 2
3•••0•••Имя 3
4•••2•••Имя 2_1
5•••2•••Имя 2_2
6•••3•••Имя 3_1

Значит надо составить запрос к базе через РНР скрипт, который пройдется по Таблице 1 и будет в цикле записывать сначала те элементы, значение в Колонке 2 которых будет равно 0 и если в Колонке 2 не 0, то сразу выбирается другой элемент из Таблицы 1 со значение в Колонке 2 равному Колонке 1, одним словом на выходе хочу получить:
Код:
Имя 1
Имя 2
Имя 2_1
Имя 2_2
Имя 3
Имя 3_1

Позже, если найдется решение, допишу вторую часть просьбы, а то я уже запарился =(
 
В своем примере ты получил все значения из колонки_3, только отсортированные. Связи с твоим описанием нет, потому как из того, что ты описал, первые три значения должны быть:

Имя 1
Имя 2
Имя 3

В общем, нормально напиши чего ты хочешь.
 
Категории с подкатегориями ? Древовидное меню ? А сразу это сказать нельзя было ?

Код:
CREATE TABLE IF NOT EXISTS `catcol` (
  `catid` int(11) NOT NULL,
  `parent` int(11) NOT NULL,
  `title` varchar(254) collate latin1_general_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

INSERT INTO `catcol` (`catid`, `parent`, `title`) VALUES
(1, 0, 'name 1'),
(2, 0, 'name 2'),
(3, 0, 'name 3'),
(4, 2, 'name 2_1'),
(5, 2, 'name 2_2'),
(6, 3, 'name 3_1');

SELECT cats2.title FROM catcol AS cats1 LEFT JOIN catcol AS cats2 ON (cats1.catid=cats2.catid AND cats1.parent=0) OR (cats2.parent=cats1.catid) WHERE cats2.catid IS NOT NULL ORDER BY cats1.catid
 
В своем примере ты получил все значения из колонки_3, только отсортированные. Связи с твоим описанием нет, потому как из того, что ты описал, первые три значения должны быть:

Имя 1
Имя 2
Имя 3

В общем, нормально напиши чего ты хочешь.

Адекватному и понимающему человеку ясно сразу, чего нужно из просьбы, а если вы не понимаете то и зачем было писать. Все условия проблемы я описал :read: А то, что получилось на выходе, можно сказать, что это древовидная структура.

Добавлено через 50 минут
Категории с подкатегориями ? Древовидное меню ? А сразу это сказать нельзя было ?

Код:
CREATE TABLE IF NOT EXISTS `catcol` (
  `catid` int(11) NOT NULL,
  `parent` int(11) NOT NULL,
  `title` varchar(254) collate latin1_general_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

INSERT INTO `catcol` (`catid`, `parent`, `title`) VALUES
(1, 0, 'name 1'),
(2, 0, 'name 2'),
(3, 0, 'name 3'),
(4, 2, 'name 2_1'),
(5, 2, 'name 2_2'),
(6, 3, 'name 3_1');

SELECT cats2.title FROM catcol AS cats1 LEFT JOIN catcol AS cats2 ON (cats1.catid=cats2.catid AND cats1.parent=0) OR (cats2.parent=cats1.catid) WHERE cats2.catid IS NOT NULL ORDER BY cats1.catid

Либо я не правильно делаю, либо... У меня выводится куча повторений...

Как вот вывести результат в РНР и затем на страницу? :thenks:
 
Адекватному и понимающему человеку ясно сразу, чего нужно из просьбы, а если вы не понимаете то и зачем было писать.
Это вЫ будете оценивать мою адекватность? Если уж на то пошло, то "Адекватному и понимающему человеку" достаточно мануалов для решения таких проблем или это я создал тему?
Не утруждайте себя ответом.

Для просмотра ссылки Войди или Зарегистрируйся

Как вот вывести результат в РНР и затем на страницу?
PHP:
	$SERVER = 'localhost';
	$USER = 'user';
	$PASSD = 'password';
	$DB = 'dbname';

	$MAIN_CONNECTION = mysql_connect($SERVER, $USER, $PASSD);
	mysql_select_db($DB, $MAIN_CONNECTION);
    $sql = "SELECT cats2.title FROM catcol AS cats1 LEFT JOIN catcol AS cats2 ON (cats1.catid=cats2.catid AND cats1.parent=0) OR (cats2.parent=cats1.catid) WHERE cats2.catid IS NOT NULL ORDER BY cats1.catid";
    $result = mysql_query($sql, $MAIN_CONNECTION) or die(mysql_error($MAIN_CONNECTION));
    $rows = mysql_numrows($result);
    for ($i=0;$i<$rows;$i++){
    	$f = mysql_fetch_array($result);
    	echo $f[title].'<br>';
    }
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху