|
|
|
| Добрый день! Я можно сказать только столкнулся с 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
или же какую-нибудь переменную прикрутить, чтобы можно было как-то распознавать с какой таблицы было извлечено значение. Спасибо... | |
|
|
|
|
|
|
|
для: 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... | |
|
|
|
|
|
|
|
для: Trianon
(10.10.2010 в 18:34)
| | Спасибо Trianon, я уже видел этот принцип, но только не пойму почему у меня не выходит, я уже ставил единичку в '1' все равно пишет ошибку
(SELECT 1 AS tab_num, data, text
FROM " . TABLE_PREFIX . "table_1)
может из-за того что стоит этот префикс перед таблицей - " . TABLE_PREFIX . " | |
|
|
|
|
|
|
|
для: ch-viktor
(10.10.2010 в 18:42)
| | я не вижу
а) оконечного текста запроса.
б) текста сообщения об ошибке.
Более того, я вижу какие-то лексические огрызки с повисшими кавычками, точками и прочей фигней.
Нельзя ли поаккуратнее показать а) и б) ? | |
|
|
|
|
|
|
|
для: 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($vbulletin, fetch_tag_list());
$latest_count = 0;
while ($show_latest=$db->fetch_array($latest))
{
$latest_count++;
$rel = $show_latest['pagetext'] = $parser->do_parse($show_latest['pagetext'],1, 1, 1, 1, 1);
$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') . '";');
?>
|
как сюда можно втулить переменные таблиц, чтобы как то обозвать каждое значение | |
|
|
|
|
|
|
|
для: ch-viktor
(10.10.2010 в 19:17)
| | попробуйте разбить задачу на две.
1) корректно составить работающий запрос, возвращающий именно те данные, которые требуются..
2) научиться пользоваться движком (т.е. обрабатывать им данные любых произвольных SELECT-запросов.
и ни в коем случае не решать их в смеси. | |
|
|
|
|
|
|
|
для: Trianon
(10.10.2010 в 19:28)
| | Так если работает выборка значений в "смеси" нормально без всяких глюков, то почему нельзя использовать такой принцип, только еще бы прицепить слева таблицы выбранных данных id или переменную таблицы. Я просто спрашиваю, знаний у меня на счет этого мало, пытаюсь как то применить логику.........
Все равно огромное спасибо за помощь! | |
|
|
|