Query ดึงข้อมูลจาก3ตารางมาแสดงในtable แต่แสดงแค่แถวเดียว
ขออภัยครับ.. ไม่เห็น แหะๆๆ
ประวัติการแก้ไข 2014-10-22 10:02:02
Date :
2014-10-22 10:00:52
By :
parsilver
Code (PHP)
$sql = "SELECT *
FROM studentscore1_1
LEFT JOIN studentscore1_2 ON studentscore1_1.max = studentscore1_2.max
LEFT JOIN studentscore1_3 ON studentscore1_1.max = studentscore1_3.max
WHERE studentscore1_1.max = '5' "; // ดึงฐานข้อมูล 3 ตารางมาแสดง
$result = mysql_query($sql);
echo $num = mysql_num_rows($result); // แสดงค่าออกมามันเห็นแค่แถวเดียวที่จริงน่าจะ 3 แถว
$i=0;
while ($row=mysql_fetch_array($result)){
echo $i."<br/>";
echo $row["Id_student2"];
$i++;
}
Date :
2014-10-22 10:02:32
By :
bunchuai
ใน Mysql แสดงครบทั้ง 3 ตารางครับ ตามภาพเลยครับ
มันไม่ทราบจะต้อง query ขี้นมายังไงและแสดงผลอย่างไร ครับ
Date :
2014-10-22 10:06:13
By :
phawaphanb
ก็ยังออกแค่แถวเดียวอยู่ครับ นับค่า num query ขึ้นมาก็มีค่าแค่ 1 ซึ่งมันควรจะเป็น 3 ใช่หรือป่าวครับ
ขอบคุณครับ
Date :
2014-10-22 10:11:55
By :
phawaphanb
Code (PHP)
echo $num = mysql_num_rows($result); // = 3 ใช้เปล่าครับ
Date :
2014-10-22 10:13:59
By :
bunchuai
ไม่ครับ echo $num มันได้เท่ากับ 1 แต่คำสั่ง SQL ไปรับใน mySQL มันแสดงผมออกมา 3 colum ครับ ผมเลยงง เลยว่าทำไม่มา Query กลับได้แค่ค่า 1
Date :
2014-10-22 10:19:05
By :
phawaphanb
ขึ้นอยู่กับข้อมูล
แต่เวลามันจอยกัน มันก็จะแสดงตามที่เห็น
field ของ tb1( record ที่1) + field ของ tb2( record ที่1) + field ของ tb3( record ที่1)
field ของ tb1( record ที่1) + field ของ tb2( record ที่1) + field ของ tb3( record ที่2) tb3 ข้อกำหนดตรง มากกว่า 1 record
field ของ tb1( record ที่1) + field ของ tb2( record ที่1) + field ของ tb3( record ที่3) tb3 ข้อกำหนดตรง มากกว่า 2 record
ก็ลอลศึกษาดูนะครับ
Date :
2014-10-22 10:25:01
By :
Chaidhanan
Code (PHP)
$sql = "SELECT *
FROM studentscore1_1
LEFT JOIN studentscore1_2 ON studentscore1_1.max = studentscore1_2.max
LEFT JOIN studentscore1_3 ON studentscore1_1.max = studentscore1_3.max
WHERE studentscore1_1.max = '5' "; // ดึงฐานข้อมูล 3 ตารางมาแสดง
$result = mysql_query($sql);
echo $num = mysql_num_rows($result); // แสดงค่าออกมามันเห็นแค่แถวเดียวที่จริงน่าจะ 3 แถว
while ($row=mysql_fetch_array($result)){
echo $row["Id_student1"];// echo มาแค่ 1 มันก็ขึ้น 1 สิ
echo $row["Id_student2"];
echo $row["Id_student3"];
}
Date :
2014-10-22 10:27:53
By :
bunchuai
ไม่ใช่ครับ ฐานข้อมูลผมจะมีทั้งหมด 3 ตารางและชื่อ fied จะเหมือนกันหมด ต่างกันก็แค่ชื่อ DB เท่านั้น
ระบบจะเป็นการตัดคะแนนักเรียน มันจะดึงคนที่โดนหักคะแนนเท่ากันทั้ง 3 ตารางมาแสดง รบกวนช่วยอธิบายหน่อยครับผมขอบคุณครับ
Date :
2014-10-22 11:09:53
By :
phawaphanb
select * from table1
union all
(select * from table2)
union all
(select * from table3)
อย่างนี้หรือเปล่า
Date :
2014-10-22 11:17:50
By :
Chaidhanan
คุณChaidhanan ครับ ขอเป็นโค้ด SQL เลยได้ใหมครับหรือตัวอย่างก็ได้ จะไปศึกษาต่อครับ ขอบคุณครับ
Date :
2014-10-22 11:21:53
By :
phawaphanb
Code (SQL)
table 1
id nm
1 test1
2 test2
table2
id fk_tb1 value
1 1 TB2_value1
2 1 TB2_value2
3 2 TB2_value3
4 2 TB2_value4
table3
id fk_tb1 value
1 1 TB3_value1
2 1 TB3_value2
3 2 TB3_value3
4 2 TB3_value4
select id , nm, null as sub_id from table1
union all ( select fk_tb1, value, id from table2)
union all ( select fk_tb2, value, id from table3)
where id=1
result
id nm sub_id
1 test1 null
1 TB2_value1 1
1 TB2_value2 2
1 TB3_value1 1
1 TB3_value2 2
/////////////////////////////////////////////////////////////////////////////////////
select * as sub_id from table1
left join table2 on table2.fk_tb1=table1.id
left join table3 on table3.fk_tb1=table1.id
where table1.id=1
id nm table2.id table2.fk_tb1 table2.value table3.id table3.fk_tb1 table3.value
1 test1 1 1 TB2_value1 1 1 TB3_value1
1 test1 1 1 TB2_value1 2 1 TB3_value2
1 test1 1 2 TB2_value2 1 1 TB3_value1
1 test1 1 2 TB2_value2 2 1 TB3_value2
Date :
2014-10-22 11:52:41
By :
Chaidhanan
ขอบคุณมากเลยครับ ผมจะลองไปประยุกต์ดูครับ...
Date :
2014-10-22 11:57:26
By :
phawaphanb
ผมลองใช้ union all แล้วก็ไม่ได้ งงว่าทำไมค่าซ้ำกันถึงแสดงออกมาได้ ผมต้องค่าให้แสดงแค่ค่า 5 เท่านั้นตามภาพเลยครับ ช่วยดูโค้ดให้ด้วยน่ะครับ
$sql=SELECT *
FROM studentscore1_1
UNION ALL SELECT *
FROM studentscore1_2
UNION ALL SELECT *
FROM studentscore1_3
WHERE max = '5'
$result = mysql_query($sql);
echo $num = mysql_num_rows($result);
while($row=mysql_fetch_array($result)) {
echo $row["Id_student2"];
echo $row["name"];
}
Date :
2014-10-22 22:53:23
By :
phawaphanb
select * from
(
SELECT * FROM studentscore1_1
UNION ALL ( SELECT * FROM studentscore1_2 )
UNION ALL ( SELECT * FROM studentscore1_3 )
) as tmp
WHERE max = '5'
Date :
2014-10-23 09:19:17
By :
Chaidhanan
ได้แล้วครับ ขอบคุณมากๆเลยครับ ผมจะไปศึกษาเรื่อง SQL ต่อไปครับ
Date :
2014-10-23 16:29:35
By :
phawaphanb
Load balance : Server 04