|
 1.2 Кб |
|
| Есть две таблицы. Прикрепляю дамп. Из каждой таблицы нужно вывести названия разделов.
Если я делаю вот такой запрос:
<?php
include ("configs/dbopen.php");
$query="SELECT id_menu, title, id_mod, name
FROM menu AS m, modules AS n
WHERE n.pid_mod =0";
$result = mysql_query($query);
if(!$result) exit() OR mysql_error();
$number = mysql_num_rows($result);
if($number>0){
for($p = 0; $row = mysql_fetch_assoc($result); ){
$menu = $row['id_menu'];
$name = $row['title'];
$mod = $row['id_mod'];
$mod_name = $row['name'];
if($p != $mod){
echo "<strong>" . $mod_name . "</strong>\r\n";
$p = $mod;
}
echo "<hr />" . $name . "<br />\r\n";
}
}
?>
|
Проблема в том, что результате запроса из первой таблицы все нормально выводится, из второй - ряды повторяются, например:
ряды 1 таблицы ряды 2 таблицы
Раздел 1 Главная
Раздел 2 Главная
Раздел 3 Главная
Мне нужно, чтобы названия разделов 2 таблицы (modules) тоже выводились один раз, например:
Главная
Контакты
Архив и т.д.
Сделала условие: $p != $mod, чтобы названия второй таблицы вывелись один раз, но теперь названия первой выводятся помногу.
Таблицы не имеют общих полей. Думаю, что объединить через JOIN нельзя. Может, вообще сделать два разных запроса? | |
|
|
|
|
|
|
|
для: Лена
(18.09.2008 в 15:07)
| | Если Вы пришете в разделе FROM несколько таблиц через запятую - нужно указывать условия связывания строк.
Фактически, запятая, которую Вы ставите между именами таблиц, воспринимается точно также как ключевое слово JOIN. | |
|
|
|
|
|
|
|
для: Trianon
(18.09.2008 в 18:29)
| | Сделала по-другому. Взяла UNION, типы полей только надо смотреть, чтобы одинаковые были в таблицах( id_menu и id_mod у меня цифровые, например)
<?php
include ("configs/dbopen.php");
//вытягиваю из базы все разделы, которые пойдут в субселект
$query="SELECT id_menu, title
FROM menu
UNION
SELECT id_mod, name
FROM modules
WHERE modules.pid_mod =0
";
$result = mysql_query($query);
if(!$result) exit() OR mysql_error();
$number = mysql_num_rows($result);
if($number>0){
while($row = mysql_fetch_array($result)){
//print_r($row);
$menu = $row['id_menu'];
$name = $row['title'];
echo $name . "<br>";
}
}
echo "<hr>";
|
Непонятно одно: в учебнике пишется, что у столбцов, которые получаются, нет заголовков, но если делать в phpMyAdmin - заголовки для столбцов берутся по названию полей первой таблицы. Выходит, в учебнике ошиблись?
Про FROM не сильно поняла, какие условия? Например? | |
|
|
|
|
|
|
|
для: Лена
(19.09.2008 в 09:25)
| | FROM menu, modules | |
|
|
|