PDA

View Full Version : آخرین رکوردهای چند table



tick-tock
جمعه 08 فروردین 1393, 14:26 عصر
با سلام .
3 تا جدول دارم با اسم های tbl1 و tbl2 و tbl3 میخوام آخرین مطالب ارسال شده ( آخرین رکوردها ) را در جایی نشان دهم . چطور میشه اینکار را انجام داد ؟؟
از دوستان خواهش میکنم کمک کنید .

MMSHFE
شنبه 09 فروردین 1393, 00:25 صبح
ساختار سه جدول یکیه یا فرق میکنه؟ اگه یکیه میتونید با UNION همه نتایج رو استخراج کنید و با ORDER BY `id` DESC LIMIT N تعداد N رکورد آخر رو استخراج کنید ولی اگه ساختارشون فرق میکنه، باید جداگانه کوئری بزنید.

tick-tock
یک شنبه 10 فروردین 1393, 16:38 عصر
با سلام . ممنون از راهنماییتان .
من یه مشکل دیگه دارم وقتی از union استفاده میکنم همه چیز خوب کار میکنه ولی وقتی order by id را به کوئری اضافه میکنم ارور میده .

کد من بصورت زیر است :




<?php include 'inc/db.php';
$result= mysql_query("SELECT `subject` FROM `vilasale` UNION ALL SELECT `sub` FROM `zamin` ORDER BY `id` DESC"); echo "<table border='2px'>"; while($row= mysql_fetch_array($result)) { echo "<tr><td>" . $row[0] . "</td></tr>"; }
echo "</table>";
?>



و ارور زیر را میدهد .

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\vila\admin\d.php on line 14

اگه قسمتORDER BY `id` DESC را حذف کنم ارور برطرف میشه .

Yashar1989
یک شنبه 10 فروردین 1393, 17:32 عصر
منظور از id همون ستون شماره مطالب هست
شما ستونی با این نام دارید؟
اگر ستون تاریخ ارسال مطلب دارید میتونید اسم ستون رو جایگزین id کنید

tux-world
یک شنبه 10 فروردین 1393, 17:33 عصر
خوب اول خود $result رو print_r بزنین ببینید خروجی چیه.معلومه اون خروجیه رو که میده foreach نمیتونه پیمایش بکنه

tick-tock
یک شنبه 10 فروردین 1393, 17:51 عصر
ptint_r که میگیرم هیچ خروجی چاپ نمیکنه .

tick-tock
یک شنبه 10 فروردین 1393, 18:57 عصر
دوستان من از کوئری زیر استفاده کردم مشکلم حل شد



$result= mysql_query("(SELECT subFROM vilaORDER BY timeDESC)UNION ALL(SELECT subFROM zaminORDER BY time DESC)");



فقط اونطوری که میخوام کار نمیکنه . یعنی هدف من از استفاده ازunion این بود که چندتا مطلب آخر ارسال شده توسط دو یا سه جدول موجود را نمایش بدم . یعنی اگه اول مطلب شماره 2 از جدول زمین ارسال شده بعد مطلب شماره 7 از جدول ویلا و بعد هم مطلب شماره 3 از جدول زمین . به ترتیب زمان ارسال به اینصورت باشه ( از آخر به اول )
مطلب شماره 3 زمین
مطلب شماره 7 ویلا
مطلب شماره 2 زمین

ولی این کد اول میاد آخرین پست های مربوط به ویلا را نشون میده و بعد میاد آخرین پستهای مربوط به زمین را نشان میده . در واقع یک order by کلی نداره و این مرتب سازی برای هر جدل جدا جدا انجام میشه

tick-tock
یک شنبه 10 فروردین 1393, 22:27 عصر
خب بالاخره این مشکل را بطور کامل حل کردم . پاسخ را قرار میدم تا اگه کسی نیازش شد استفاده کنه .



include 'inc/db.php';
$result= mysql_query("(SELECT time FROM `vila`) UNION ALL (SELECT time FROM `zamin`)ORDER BY `time` DESC");
echo "<table border='2px'>"; while($row= mysql_fetch_array($result)) { echo "<tr><td>" . $row['time'] . "</td></tr>"; }
echo "</table>";