[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: выборка данных из двух таблиц
franko
Здраствуйте! На сайте http://www.11klassniki.ru выводятся по дате статьи из двух таблиц.


<!--Выводим статьи по дате из таблицы № 1-->
<?php 
$result1 = mysql_query("SELECT * FROM tabl1 ORDER by date" , $bd);
printf ("<a href='view_post.php?id=%s'><p>%s</p><br><p>%s< ;/p></a>
"
, $myrow1["id"], $myrow1["title"], $myrow1["desc"]);
?>


<!--Выводим статьи по дате из таблицы № 2-->
<?php 
$result2 = mysql_query("SELECT * FROM tabl2 ORDER by date" , $bd);
printf ("<a href='view_post_ege.php?id=%s'><p>%s</p><br><p>% s</p></a>
"
, $myrow2["id"], $myrow2["title"], $myrow2["desc"]);
?>


Вопрос: Как объединить вывод из двух таблиц по дате? Как вы видите в вышеприведенном коде сначала выводятся статья из таблицы и только потом по дате...
Структура таблицы одинакова, кроме полей (INT) - t1 и t2, которые сортируют ЕГЭ и Рубрики.



Спустя 13 минут, 9 секунд (1.11.2010 - 14:26) SlavaFr написал(а):
смотри в SQL "UNION"

Спустя 18 минут, 53 секунды (1.11.2010 - 14:44) linker написал(а):
(SELECT * FROM  `tabl1`)
UNION
(SELECT * FROM `tabl2`)
ORDER BY `date` DESC

Спустя 20 минут, 53 секунды (1.11.2010 - 15:05) franko написал(а):
а как реализовать вывод?

для 1-й табл. <a href='view_post.php?id=%s'></a>

для 2-й табл. <a href='view_post_ ege.php?id=%s'></a>

были бы они одинаковые, но отличие view_post.php и view_post_ege.php

Спустя 6 минут, 11 секунд (1.11.2010 - 15:11) linker написал(а):
Сливай все в одну таблицу и добавляй новое поле, аля тип записи (1 - ЕГЭ, 2 - Рубрики). Тогда выбираешь все из одной таблицы и просто чекаешь данное поле, если значение 1, то выводить одну ссылку, если значение 2, то другую. Да, есть еще один вариант
(SELECT *, 'view_post.php' AS `script` FROM  `tabl1`)
UNION
(SELECT *, 'view_post_ege.php' AS `script` FROM `tabl2`)
ORDER BY `date` DESC
$Res = mysql_query(...);
while($Row = mysql_fetch_assoc($Res))
{
printf ("<a href='%s?id=%s'><p>%s</p><br><p>% s</p></a>", $Row['script'], $Row["id"], $Row["title"], $Row["desc"]);
}

Спустя 1 час, 9 минут, 3 секунды (1.11.2010 - 16:21) franko написал(а):
Цитата
Сливай все в одну таблицу и добавляй новое поле, аля тип записи (1 - ЕГЭ, 2 - Рубрики). Тогда выбираешь все из одной таблицы и просто чекаешь данное поле, если значение 1, то выводить одну ссылку, если значение 2, то другую.



Этот вариант более подходит. как это сделать практически?

Спустя 3 часа, 44 минуты, 55 секунд (1.11.2010 - 20:05) SlavaFr написал(а):
(SELECT ........, 'tabl1' as ot FROM  `tabl1`)
UNION
(SELECT ......, 'tabl2' as ot FROM `tabl2`)
ORDER BY `date` DESC

при выводе проверяеш значение ot и взависемости от результата вызываеш
view_post.php или view_post_ege.php

Спустя 11 минут, 53 секунды (1.11.2010 - 20:17) SerginhoLD написал(а):
мне не нравится дизайн *я люблю твороженные булочки*, и я вижу сходство с сайтами Попова.
UPDATE by inpost: привёл в культурный вид

Спустя 2 часа, 12 минут, 46 секунд (1.11.2010 - 22:30) sergeiss написал(а):
Цитата (SerginhoLD @ 1.11.2010 - 21:17)
мне от такого дизайна сайта уже блевать хочется,

Ну сходи на недельку в бан, может быть пройдёт за это время... wink.gif

Спустя 11 часов, 23 секунды (2.11.2010 - 09:30) linker написал(а):
franko
Ну если тебе понравился вариант с дополнительным полем, то в каждую табличку добавь по новому полю, например, `mode`. В первой таблице поставь по-умолчанию значение 0, а во второй значение 1.
(SELECT * FROM  `tabl1`)
UNION
(SELECT * AS `script` FROM `tabl2`)
ORDER BY `date` DESC
$Res = mysql_query(...);
while($Row = mysql_fetch_assoc($Res))
{
(!$Row['mode'])
?
printf ("<a href='view_post.php?id=%s'><p>%s</p><br><p>% s</p></a>", $Row["id"], $Row["title"], $Row["desc"]);
:
printf ("<a href='view_post_ege.php?id=%s'><p>%s</p><br><p>% s</p></a>", $Row["id"], $Row["title"], $Row["desc"]);
}
Но лично мне второй вариант более нравится.

Спустя 8 часов, 36 минут, 52 секунды (2.11.2010 - 18:07) franko написал(а):
При применении

<?php
$Res = mysql_query("SELECT * FROM tabl1 UNION SELECT * AS script FROM tabl2 ORDER BY date DESC", $db);

while($Row = mysql_fetch_assoc($Res))
{
(!$Row['mode']);
printf ("<a href='view_post.php?id=%s'><p>%s</p><br><p>% s</p></a>", $Row["id"], $Row["title"], $Row["desc"]);
printf ("<a href='view_post_ege.php?id=%s'><p>%s</p><br><p>% s</p></a>", $Row["id"], $Row["title"], $Row["desc"]);
}

?>

выдается ошибка:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in Y:\home\localhost\www\franko\index.php on line 130

Спустя 8 минут, 15 секунд (2.11.2010 - 18:16) SlavaFr написал(а):
$Res = mysql_query("SELECT *, 0 as mode FROM tabl1 UNION SELECT * , 1 as mode FROM tabl2 ORDER BY date DESC") or die(mysql_error());
while($Row = mysql_fetch_assoc($Res))
{
if(!$Row['mode']){
printf ("<a href='view_post.php?id=%s'><p>%s</p><br><p>% s</p></a>", $Row["id"], $Row["title"], $Row["desc"]);
}
else{ printf ("<a href='view_post_ege.php?id=%s'><p>%s</p><br><p>% s</p></a>", $Row["id"], $Row["title"], $Row["desc"]);
}
}

Спустя 1 час, 12 минут, 15 секунд (2.11.2010 - 19:28) franko написал(а):
Ошибка:

The used SELECT statements have a different number of columns

Спустя 44 минуты, 58 секунд (2.11.2010 - 20:13) linker написал(а):
Во-первых, в данном случае каждый SELECT нужно в скобки заключать. Во-вторых, ошибка из разного количества выбираемых полей.

Спустя 23 минуты, 43 секунды (2.11.2010 - 20:37) SlavaFr написал(а):
по этому я в моем примере ........ написал, имея в виду, что надо поля перечислять и причем так, чтоб их количиство и имена по крайней мере посредством алиаса были одинаковы.

Спустя 2 дня, 20 часов, 55 минут, 35 секунд (5.11.2010 - 17:32) franko написал(а):
Спасибо.

Спустя 1 год, 2 месяца, 12 дней, 21 час, 1 минута, 28 секунд (18.01.2012 - 13:34) phoebe написал(а):
<?php  

$result2 = mysql_query ("SELECT id,text,categor,date,cover,view,downloads, 0 as mode FROM `dvdcd`) UNION
(SELECT id,text,categor,date,cover,view,downloads, 1 as mode FROM `my_cover` ORDER BY date DESC LIMIT 10"
,$db);
while($myrow2 = mysql_fetch_assoc($result2))
{
if(!$myrow2['mode']){
printf ("<div id='container2'>
<div id='foto' class='cover'>%s</div>
<div id='info' class='info'>
<p class='index_name'><a href='view_cover.php?id=%s'>%s</a></p>
<p class='index_adds'>Категория: %s</p>
<p class='index_adds'>Дата добавления: %s</p>
<p class='index_adds'>Просмотров: %s</p>
<p class='index_adds2'> %s</p></div>

</div><br><br>"
,$myrow2["cover"],$myrow2["id"],$myrow2["text"],$myrow2["categor"],$myrow2["date"],$myrow2["view"],$myrow2["downloads"]);
}
else{ printf ("<div id='container2'>
<div id='foto' class='cover'>%s</div>
<div id='info' class='info'>
<p class='index_name'><a href='view_downloads.php?id=%s'>%s</a></p>
<p class='index_adds'>Категория: %s</p>
<p class='index_adds'>Дата добавления: %s</p>
<p class='index_adds'>Просмотров: %s</p>
<p class='index_adds2'>%s</p></div>

</div><br><br>"
, $myrow2["cover"],$myrow2["id"],$myrow2["text"],$myrow2["categor"],$myrow2["date"],$myrow2["view"],$myrow2["downloads"]);
}
}

?>


Подскажите пожалуйста где у меня ошибка, а то у меня на страницу ничего не выводиться, но и ошибку не показывает. в 2 таблицах создала дополнительные поля с значением 0 и 1.

Спустя 1 час, 24 минуты, 56 секунд (18.01.2012 - 14:58) inpost написал(а):
Трупокопатель! Открывая тему ТС все будут отвечать именно ТС, а не левым вопросам, которые к тебе не относятся.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.