Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: многотабличный запрос и ошибка
 
 автор: 10100100   (22.10.2006 в 11:28)   письмо автору
 
 

пытаюсь составить многотабличный запрос но немного не врубаюсь что к чему... помогите пожалуйста.
необходимо из таблиц cms_cat и cms_ucat вытащить данные столбца cat если значение столбца up = 1.
таблицы:

CREATE TABLE `cms_cat` (
`id_cat` INT NOT NULL AUTO_INCREMENT,
`count` TINYTEXT,
`cat` TINYTEXT,
`up` TINYTEXT DEFAULT NULL,
PRIMARY KEY (id_cat)
) TYPE = MYISAM;

CREATE TABLE `cms_ucat` (
`id_ucat` INT NOT NULL AUTO_INCREMENT,
`id_cat` TINYTEXT,
`count` TINYTEXT,
`cat` TINYTEXT,
`up` TINYTEXT DEFAULT NULL,
PRIMARY KEY (id_ucat)
) TYPE = MYISAM;

   
 
 автор: cheops   (22.10.2006 в 12:09)   письмо автору
 
   для: 10100100   (22.10.2006 в 11:28)
 

Столбца up какой таблицы? Что хранится в таблице cms_cat и cms_ucat и какой результат вы хотите получить, вам действительно нужен многотабличный запрос (т.е. реализация связи), а не объединение (union)?

   
 
 автор: 10100100   (22.10.2006 в 12:50)   письмо автору
 
   для: cheops   (22.10.2006 в 12:09)
 

в таблицах хранятся в первой:
id_каталога, занимаемое место по счёту, название каталога, индикатор up (0 or 1)

вторая таблица:
id_подкаталога, id_каталога(к которому прикреплён данный пункт подкаталога), индикатор места по счёту, имя подкаталога, индикатор up (0 or 1)

мне нужно вывести названия каталогов и подкаталогов в одном запросе, в который индикатор up равен единице.

возможно Вы правы - видимо нужен UNION а не многотабличный запрос. я в этом не очень хорошо пока тчо разбираюсь. помогите пожалуйста.

   
 
 автор: ЯR   (22.10.2006 в 13:30)   письмо автору
 
   для: 10100100   (22.10.2006 в 12:50)
 


SELECT cat FROM cms_cat
UNION
SELECT cat AS ucat FROM cms_ucat


Так?

   
 
 автор: cheops   (22.10.2006 в 14:25)   письмо автору
 
   для: ЯR   (22.10.2006 в 13:30)
 

Только условие нужно добавить, и названия столбцов подобрать, чтобы они совпадали
SELECT cat, count, up FROM cms_cat 
WHERE up = 1
UNION 
SELECT cat, count, up FROM cms_ucat
WHERE up = 1

   
 
 автор: 10100100   (22.10.2006 в 15:45)   письмо автору
 
   для: 10100100   (22.10.2006 в 12:50)
 

хм... спасибо. это то что надо, а как вывод теперь правильно организовать?
мой код сейчас выглядит так:

<?php
include "config.php";
$select_sql "SELECT cat, id_cat, count, up FROM cms_cat WHERE up = 1 UNION SELECT cat, id_ucat, count, up FROM cms_ucat WHERE up = 1"
$result MYSQL_QUERY($select_sql); 
if(!
$result) exit(mysql_error()); 
    WHILE (
$arr mysql_fetch_array($result)) 
    { 
    
$id_cat $arr['id_cat'];
    
$id_ucat $arr['id_ucat'];
    
$count $arr['count'];
    
$cat $arr['cat'];
    
$up $arr['up'];
    echo 
"<a href=\"\">$cat</a>"

    }
?>


Ругается на id_cat и id_ucat но ведь они мне тоже нужны.

   
 
 автор: cheops   (23.10.2006 в 02:23)   письмо автору
 
   для: 10100100   (22.10.2006 в 15:45)
 

>Ругается на id_cat и id_ucat но ведь они мне тоже нужны.
1) Приведите точное сообщение об ошибке.
2) Поля id_ucat в результирующей таблице нет, все имена берутся из первой таблице, т.е. поля называются cat, id_cat, count, up.

   
 
 автор: 10100100   (23.10.2006 в 04:28)   письмо автору
 
   для: cheops   (23.10.2006 в 02:23)
 

Notice: Undefined index: id_ucat in z:\home\localhost\www\ХХХ\cms\news\topmenu_main.php on line 9

простой нотайс выводит. дело в том что в адресе этих кнопок (ну которые мы выводим), должен быть указан их id_cat и id_ucat...

   
 
 автор: cheops   (23.10.2006 в 12:23)   письмо автору
 
   для: 10100100   (23.10.2006 в 04:28)
 

Опишите пожалуйста скрипт, который вы создаёте - какова его конечная цель?

   
 
 автор: 10100100   (23.10.2006 в 15:04)   письмо автору
 
   для: cheops   (23.10.2006 в 12:23)
 

кхм. ну собсно всё просто - делаю нечто вроде LightCMS.
мой скрипт должен выводить на страницу названия кнопок у которых up равен 1.
соответственно должна генерироваться гиперссылка где в качестве имени идёт нечто вроде show.php?id_cat=$id_cat&id_ucat=$id_ucat
вот собсно и всё :)

   
 
 автор: cheops   (23.10.2006 в 22:25)   письмо автору
 
   для: 10100100   (23.10.2006 в 15:04)
 

А если запись из таблицы cms_cat, какое значение должен принимать GET-параметр id_ucat? Или таких записей вообще не должно быть?

   
 
 автор: 10100100   (24.10.2006 в 04:57)   письмо автору
 
   для: cheops   (23.10.2006 в 22:25)
 

если запись происходит только из cms_cat то id_ucat должен либо ровнятся "0" либо вообще отсутствовать в адресе.

   
 
 автор: cheops   (24.10.2006 в 12:25)   письмо автору
 
   для: 10100100   (24.10.2006 в 04:57)
 

Тогда лучше использовать следующий запрос
SELECT cat, id_cat, id_ucat,  count, up FROM cms_ucat 
WHERE up = 1
UNION  
SELECT cat, id_cat, 0, count, up FROM cms_cat  
WHERE up = 1

   
 
 автор: 10100100   (24.10.2006 в 17:00)   письмо автору
 
   для: cheops   (24.10.2006 в 12:25)
 

спасибо. мне это очень помогло.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования