PDA

View Full Version : سوال: نمایش اطلاعات دو جدول جوین شده با یک روش خاص



Fartaj
یک شنبه 21 دی 1393, 08:42 صبح
سلام خدمت دوستان

ببینید من دو تا جدول دارم یکی برند و یکی موبایل فیلد مشترک این دو تا brand_id هست حالا من یک جوین گرفتم :


$allmobile = $this->Mobile->query(
"SELECT * FROM mobile JOIN brands ON mobile.brand_id = brands.brand_id ORDER BY mobile.brand_id" );


اگر من تو جدول برند دو تا برند داشته باشم : ال جی -> 1 و سامسونگ -> 2

و مثلا از آی دی 1 (ال جی) تو جدول موبایل 3 مدل گوشی ثبت کرده باشم و از آی دی 2 10 مدل می خوام موقع چاپ مدل های گوشی اول شروع برند با آی دی 1 کلمه ال جی رو چاپ کند و بعد از اینکه 3 مدل ال جی تموم شد کلمه سامسونگ رو چاپ کنه و در ادامه مدل هاس سامسونگ

حالا تو foreach من چجوری این کار رو انجام بدم ؟
شبیه همین تصویر پیوست شده می خوام بشه

127458

MMSHFE
یک شنبه 21 دی 1393, 13:26 عصر
$products = mysql_query('
SELECT * FROM `products` `p`
LEFT OUTER JOIN `brands` `b` ON `p`.`brand_id`=`b`.`id`
ORDER BY `brand_id`,`p`.`id`;
');
while($product = mysql_fetch_assoc($products)) {
// echo '<p>' . print_r($product, true) . '</p>' . PHP_EOL;
}

Fartaj
یک شنبه 21 دی 1393, 14:14 عصر
$products = mysql_query('
SELECT * FROM `products` `p`
LEFT OUTER JOIN `brands` `b` ON `p`.`brand_id`=`b`.`id`
ORDER BY `brand_id`,`p`.`id`;
');
while($product = mysql_fetch_assoc($products)) {
// echo '<p>' . print_r($product, true) . '</p>' . PHP_EOL;
}

ممنون بابت پاسختون ولی فکر کنم خود جوین درسته مسئله اینه که من توحلقه می خوام تو هر چند سطر یک سطر نام برند چاپ بشه البته زمانی که اطلاعات برند قبلی تموم شده باشه

MMSHFE
یک شنبه 21 دی 1393, 14:36 عصر
ببینید من ایده کلی کوئری رو گفتم. حالا بستگی به خودتون داره که چطور کار کنید. برای مثال این یک راهه:

$prevBrand = '';
while($product = mysql_fetch_assoc($products)) {
if($prevBrand != $product['brand']) {
echo $product['brand'];
$prevBrand = $product['brand'];
}
...
}
اینطوری به محض اینکه brand عوض بشه، brand جدید چاپ میشه و مقدارش توی prevBrand ذخیره میشه و تا وقتی عوض نشده، دیگه چاپ نمیشه.

MMSHFE
یک شنبه 21 دی 1393, 14:38 عصر
یک راه دیگه هم کوئری زدنهای جداگانه است. یعنی یک کوئری بزنید brandها رو استخراج کنید و باهاش حلقه بسازین و داخل هر brand دوباره کوئری بزنین محصولاتش رو استخراج کنید و یک حلقه داخلی برای نمایششون بسازین.