PDA

View Full Version : سوال: اتصال 3 جدول از دیتابیس



ghiravani
دوشنبه 16 اردیبهشت 1392, 13:36 عصر
سلام دوستان.خسته نباشید

3 جدول دوره آموزشی، کاربران و نمره داریم که به صورت زیر هست:


(TABLE: levels)

id name
-------------------------------
1 english 504
2 english1100
3 school 1
4 school 2



(TABLE: users)

id name email
---------------------------------------------------
1 ali ali@gmail.com
2 reza reza@gmail.com
3 saeed saeed@gmail.com



(TABLE: grade)

id id_user id_levels grade
----------------------------------------------------------
1 2 2 18
2 1 2 19
3 3 1 17
4 2 4 15
5 1 1 19



برای نمایش جدول grade به مدیر سایت، لازمه تا بجای ID کاربر و ID دوره آموزشی، نام کاربر به همراه ایمیلش و نام دوره آموزشی نمایش داده بشه.

این دستور رو برای اتصال 3 جدول نوشتم اما جوابی که من میخوام نداد:(


$query = "SELECT * FROM grade,levels,users WHERE grade.id_user = users.id AND grade.id_levels = levels.id";
$result = mysql_query($query);
$num = mysql_num_rows($result);
echo '<table>';
while($fetch = mysql_fetch_array($result))
{
echo '
<tr>
<td>'.$fetch['levels.name'].'</td>
<td>'.$fetch['users.name'].'</td>
<td>'.$fetch['email'].'</td>
<td>'.$fetch['grade'].'</td>
</tr>
';
}
echo '</table>';

.fatemeh
دوشنبه 16 اردیبهشت 1392, 14:46 عصر
برای اتصال بین جداول باید از دستور join استفاده کنی.
یه جستجو کن مثالاش زیاده.

ghiravani
سه شنبه 17 اردیبهشت 1392, 18:12 عصر
سلام
خودم جوابم رو پیدا کردم
الان با این روش هرچی جدول بخواید رو میشه بهم مرتبط کرد.

قطعه کد زیر:


<?php
$db = mysql_connect("localhost","root","");
mysql_select_db("mytest",$db);
mysql_query("SET CHARACTER SET utf8", $db);

$query = "SELECT grade.grade AS A ,levels.name AS B,users.name AS C,users.email AS D
FROM grade
INNER JOIN users ON grade.id_user = users.id
INNER JOIN levels ON grade.id_levels = levels.id";
$result = mysql_query($query);
$num = mysql_num_rows($result);
echo '<table>
<tr>
<td>نام</td>
<td>ایمیل</td>
<td>نام دوره</td>
<td>نمره</td>
</tr>
';
while($fetch = mysql_fetch_array($result))
{
echo '
<tr>
<td>'.$fetch['C'].'</td>
<td>'.$fetch['D'].'</td>
<td>'.$fetch['B'].'</td>
<td>'.$fetch['A'].'</td>
</tr>
';
}
echo '</table>';
?>

ghiravani
سه شنبه 17 اردیبهشت 1392, 18:15 عصر
اما یک سوال:
بهتر نیست بجای اینکه چندتا جدول بسازیم که باز بعدا مجبور باشیم این ها رو join کنیم و زمان پردازش از CPU بگیریم، همه رو در یک جدول تا جای ممکن طراحی کنیم؟
در این زمینه زیاد اطلاعات ندارم و میزان منابع استفاده شده از سرور برام مهم هست. در چه روش هایی، منابع کمتری از سرور گرفته میشه؟

ممنون