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

Форум MySQL

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

 

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

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

тема: Добавить к списку название таблицы
 
 автор: ch-viktor   (10.10.2010 в 16:26)   письмо автору
 
 

Добрый день! Я можно сказать только столкнулся с mysql, и поэтому сам справится не могу.
У меня есть 3 таблицы:

table_1
data | text
001 | text_1
003 | text_3
008 | text_8
015 | text_15

table_2
data | text
004 | text_4
009 | text_9
014 | tex_14
016 | text_16

table_3
data | text
002 | text_2
005 | text_5
006 | text_6
007 | text_7

Я соединяю все эти таблицы:

$tab = $db->query("
(SELECT data, text
FROM table_1)

UNION ALL

(SELECT data, text
FROM table_2)

UNION ALL

(SELECT data, text
FROM table_3)
 
ORDER BY data DESC LIMIT 10");




$tab_count = 0;
while ($show_tab=$db->fetch_array($tab)) 

    $tab_count++;
    $val = $show_tab['text']; 

if ($tab_count < 10) 
    { 
        $tab_sep = "<br /><br /> ";
    }
    else
    {
        $tab_sep = "";
    }
    
    $rez .= "$val  $tab_sep";
}


Подскажите как добавить к списку всех результатов название таблицы, чтобы получилось вроде этого:

text_1 table_1
text_2 table_3
text_3 table_1
text_4 table_2
text_5 table_3
text_6 table_3
text_7 table_3
text_8 table_1
text_9 table_2
text_14 table_2

или же какую-нибудь переменную прикрутить, чтобы можно было как-то распознавать с какой таблицы было извлечено значение. Спасибо...

  Ответить  
 
 автор: Trianon   (10.10.2010 в 18:34)   письмо автору
 
   для: ch-viktor   (10.10.2010 в 16:26)
 

(SELECT 1 AS tab_num, data, text
FROM table_1)

UNION ALL

(SELECT 2 AS tab_num, data, text
FROM table_2) 


etc...

  Ответить  
 
 автор: ch-viktor   (10.10.2010 в 18:42)   письмо автору
 
   для: Trianon   (10.10.2010 в 18:34)
 

Спасибо Trianon, я уже видел этот принцип, но только не пойму почему у меня не выходит, я уже ставил единичку в '1' все равно пишет ошибку
(SELECT 1 AS tab_num, data, text
FROM " . TABLE_PREFIX . "table_1)

может из-за того что стоит этот префикс перед таблицей - " . TABLE_PREFIX . "

  Ответить  
 
 автор: Trianon   (10.10.2010 в 18:56)   письмо автору
 
   для: ch-viktor   (10.10.2010 в 18:42)
 

я не вижу
а) оконечного текста запроса.
б) текста сообщения об ошибке.
Более того, я вижу какие-то лексические огрызки с повисшими кавычками, точками и прочей фигней.
Нельзя ли поаккуратнее показать а) и б) ?

  Ответить  
 
 автор: ch-viktor   (10.10.2010 в 19:17)   письмо автору
 
   для: Trianon   (10.10.2010 в 18:56)
 

Вообще это модуль к форумному движку vbulletin, не думал сразу писать его весь так думал понять сам принцип как это сделать.
В таком виде он у меня работает:

<?php



$latest 
$db->query("

(SELECT g.dateline, g.pagetext
FROM " 
TABLE_PREFIX "groupmessage AS g)

UNION ALL

(SELECT s.dateline, s.pagetext
FROM " 
TABLE_PREFIX "visitormessage AS s)

UNION ALL

(SELECT a.lastpicturedate AS dateline, a.title AS pagetext
FROM " 
TABLE_PREFIX "album AS a)
 
ORDER BY dateline DESC LIMIT 25"
);

$parser =& new vB_BbCodeParser($vbulletinfetch_tag_list()); 

$latest_count 0;
while (
$show_latest=$db->fetch_array($latest)) 

    
$latest_count++;
    
$rel $show_latest['pagetext'] = $parser->do_parse($show_latest['pagetext'],11111); 
    
    
    
    
   
    
$latest_dateline vbdate($vbulletin->options['dateformat'], $show_latest['dateline']);
   


    if (
$latest_count 25
    { 
        
$latest_sep "<br /><br /> ";
    }
    else
    {
       
        
$latest_sep "";
    }
    
    
$latest_com .= "$rel <br /><b>$latest_dateline</b> $latest_sep";
}

eval(
'$home["$mods[modid]"][\'content\'] = "' fetch_template('adv_portal_vb_latest_com') . '";');
?>



как сюда можно втулить переменные таблиц, чтобы как то обозвать каждое значение

  Ответить  
 
 автор: Trianon   (10.10.2010 в 19:28)   письмо автору
 
   для: ch-viktor   (10.10.2010 в 19:17)
 

попробуйте разбить задачу на две.
1) корректно составить работающий запрос, возвращающий именно те данные, которые требуются..
2) научиться пользоваться движком (т.е. обрабатывать им данные любых произвольных SELECT-запросов.

и ни в коем случае не решать их в смеси.

  Ответить  
 
 автор: ch-viktor   (10.10.2010 в 19:38)   письмо автору
 
   для: Trianon   (10.10.2010 в 19:28)
 

Так если работает выборка значений в "смеси" нормально без всяких глюков, то почему нельзя использовать такой принцип, только еще бы прицепить слева таблицы выбранных данных id или переменную таблицы. Я просто спрашиваю, знаний у меня на счет этого мало, пытаюсь как то применить логику.........
Все равно огромное спасибо за помощь!

  Ответить  
Rambler's Top100
вверх

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