ช่วยทีครับ เรื่อง การ INSERT Record โดยใช้อีกตารางหนึ่ง
Code (SQL)
insert into match
select null, concat( tb1,name_t'-' ,tb2.name_t), tb1.idt, tb2.idt, 0, 0
from team as tb1
left join team as tb2 on tb1.idt<>tb2.idt
id_match ต้องเป็น auto_increment
Date :
2018-08-12 18:12:24
By :
Chaidhanan
[img][img] [/img][/img]ขอบคุณสำหรับคำตอบครับผม
หลักจากที่ผมได้แก้โค้ดตามท่าน Chaidhanan โดยใส่โค้ดตามนี้
Code (PHP)
$sql = "INSERT INTO match
SELECT null, concat( team.name_t'-' ,match.name_t), team.id_t, match.id_t, 0, 0
FROM team as team
left join team as match on team.id_t<>match.id_t";
โดยตามความที่เข้าใจว่า
tb1 คือ ตารางที่ 1 คือ team
tb2 คือ ตารางที่ 2 คือ match
id_match เป็น auto_increment เรียบร้อย
และ idt คือ id_t
ผมเข้าใจตามนี้ถูกต้องไหมครับ
โดยแก้แล้ว ไม่สามารถ insert ได้ครับ
โดย ERROR ตามภาพนี้ครับ
ขอความกรุณาอีกรอบครับผม
ประวัติการแก้ไข 2018-08-12 22:29:15
Date :
2018-08-12 22:27:21
By :
2140630302645206
tb1 tb2 แทน ทีม ทั้งคู่ครับ
tb1 แทน home team
tb2 แทน away team
แต่เป็นการอ้างอิง จากตารางทีม เดียวกัน
ลองทดสอบว่าข้อมูล มาถูกต้องไหม ยังไม่ต้อง ใส่คำสั่ง insert
Code (SQL)
select null id, concat( tb1,name_t, '-' ,tb2.name_t) match_name, tb1.idt home, tb2.idt away, 0 score_home, 0 score_away
from team as tb1
left join team as tb2 on tb1.idt<>tb2.idt
เอาแค่นี้ ก่อน แล้วตรวจสอบข้อมูลว่าตรงไหม ส่วนคำสั่ง insert เดี๋ยวค่อยว่ากัน อีกที
ปล. โค๊ดที่จขกทเขียน คอมม่า หายไปตัว ใน ฟังก์ชั่น concat
ประวัติการแก้ไข 2018-08-13 12:55:23 2018-08-13 13:01:20 2018-08-13 13:02:54
Date :
2018-08-13 12:54:32
By :
Chaidhanan
ขอบคุณสำหรับคำตอบครับ
ได้นำโค้ดที่ท่านแก้ไข้มา ไปทดลอง เกิด error ดังนี้ครับ
ไม่ทราบว่าผมเข้าใจตรงไหนผิดไปหรือปล่าวครับ
ขอความกรุณาอีกรอบครับผม
Date :
2018-08-13 14:13:28
By :
2140630302645206
วนลูปอาร์เรย์ แล้วเช็คค่ากับตัวเองโดยจับคู่กับตำแหน่งถัดไปครับ
ถามเพิ่มเติมหน่อยว่าต้องการแบบ เหย้า - เยือน หรือไม่
ถ้ามีแบบเหย้า-เยือน ก็ต้อง copy อาร์เรย์เป็น 2 ชุด
ต้องสลับ A-B กับ B-A
ตอนจะ INSERT จากคร้งเดียวก็เป็น 2 ครั้ง แค่เปลี่ยนตำแหน่งตอนสร้าง SQL เท่านั้น
Date :
2018-08-13 15:06:38
By :
{Cyberman}
ไม่ต้องการแบบ เหย้า-เยือนครับ
ผมทำโปรเจ็คการแข่งขัน แบบแพ้คัดออกครับ โดยมีการจัดตาราง และ ป้อนผลการแข่งขัน
โดยผมอยากทำ ให้รายชื่อทีม ในตาราง team
ramdom โดยไม่ให้ซ้ำกัน แล้ว insert ข้อมูล เข้าไปที่ตาราง matchh
โดย insert name_t เข้าไป ใน ช่อง team01 และ team02
ซึ่งผมทำได้แค่ random รายชื่อ team ออกมา โดยใช้คำสั่ง
Code (SQL)
SELECT * FROM team ORDER BY RAND()"
แต่ผมไม่ทราบว่าต้องเขียนยังไง ให้ รายชื่อทีมที่ random ไป insert เข้าตาราง matchh ครับผม
Date :
2018-08-13 15:42:57
By :
2140630302645206
ขอบคุณสำหรับคำตอบ
ได้ทำการแก้ไข โค้ดที่ท่านให้มา
Code (SQL)
select null id, concat( tb1.name_t, '-' ,tb2.name_t) match_name, tb1.id_t home, tb2.id_t away, 0 score_home, 0 score_away
from tt as tb1
left join tt as tb2 on tb1.id_t<>tb2.id_t
where not exists( select * FROM matchh where team01=tb1.id_t or team02=id1.id_t)
and not exists( select * FROM matchh where team01=tb2.id_t or team02=id2.id_t)
เกิด ERROR ตามนี้
#1054 - Unknown column 'id1.id_t' in 'where clause'
ซึ่งผมไม่เข้าใจที่มาของ id1, id2 ว่ามาจากตรงไหน หรือ คืออะไรครับผม
Date :
2018-08-13 16:49:35
By :
2140630302645206
แสดงว่า ไม่มี basic เรื่อง alias เลยใช่ไหมครับ น่าจะวิเคราะห์ จากเออเร่อร์ที่มันบอกมา แล้วน่าจะแก้เองได้แล้ว
ถ้าสังเกตุดีๆ ก็จะมองเห็นว่ามันเออเร่อร์ อะไร ถ้าคูณไม่คิดจะวิเคราะห์เองบ้าง อนาคตก็ไม่ไปไหนหรอกครับ
error ก็บอกอยู่แล้วว่า unknown column ก็แสดงว่ามันสกดผิด วิเคราะห์เอาหน่อยครับ
ถ้าคุณอ่านโค๊ดทั้งหมดและวิเคราะห์ดูคุณต้องรู้แล้วว่าควรจะแก้ยังไง นี่แสดงว่าไม่ได้วิเคราะห์โค๊ดทั้งหมด
บางทีคนตอบก็เบลอเป็นเหมือนกัน ก็ต้องช่วยตัวเองบ้างนะครับ
ปล. โค๊ดที่ให้ไปยังไม่สมบูรณ์ เพราะต้องผ่านกระบวนการ insert ก่อน ถึงจะตรวจสอบได้ .ให้ใช้ร่วม กับ main code คิวรี่มาพัก ก่อน แล้ววน ลูป insert เข้าไปที่ รายการ
ปล.อีกที เดิมว่าจะสอนไปที่ละ step แต่ไม่ยอมวิเคราะห์เองบ้าง เลยคิดว่าแค่นี้ดีว่า ทดลองเอาเองนะครับ
ประวัติการแก้ไข 2018-08-13 18:14:15 2018-08-13 18:15:54
Date :
2018-08-13 17:55:21
By :
Chaidhanan
ขอโทษครับ ผมไม่มีความรู้ เรื่อง alias เลยครับ รู้แค่ mysql เบื้องต้น เท่านั้น
ผมจะไปศึกษาเรื่อง alias เพิ่มเติม ครับผม
ขอบคุณที่ให้คำปรึกษาครับ ขอบพระคุณครับผม
Date :
2018-08-13 18:26:05
By :
2140630302645206
ถ้าเป็นแบบเก็บคะแนน จะประมาณนี้ แต่ถ้าแพ้คัดออกเดี๋ยวหาตัวอย่างอีกทีครับ
Code (PHP)
<?php
$teams = array(
'Team 1',
'Team 2',
'Team 3',
'Team 4',
'Team 5',
'Team 6',
'Team 7',
'Team 8'
);
$team_logo[0] = 'https://cdn4.iconfinder.com/data/icons/pokemon-go/512/Pokemon_Go-15-512.png';
$team_logo[1] = 'https://cdn4.iconfinder.com/data/icons/pokemon-go/512/Pokemon_Go-16-512.png';
$team_logo[2] = 'https://cdn4.iconfinder.com/data/icons/pokemon-go/512/Pokemon_Go-25-512.png';
$team_logo[3] = 'https://cdn4.iconfinder.com/data/icons/pokemon-go/512/Pokemon_Go-23-128.png';
$team_logo[4] = 'https://cdn4.iconfinder.com/data/icons/pokemon-go/512/Pokemon_Go-37-128.png';
$team_logo[5] = 'https://cdn4.iconfinder.com/data/icons/pokemon-go/512/Pokemon_Go-12-128.png';
$team_logo[6] = 'https://cdn4.iconfinder.com/data/icons/pokemon-go/512/Pokemon_Go-29-128.png';
$team_logo[7] = 'https://cdn4.iconfinder.com/data/icons/pokemon-go/512/Pokemon_Go-01-128.png';
?>
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<title>PHP ตารางการแข่งขัน</title>
<style>
.games-schedule{
margin : auto;
float : none;
}
.games-schedule .well {
background-color: #fafbfc;
border: 1px #e7e7e7 solid;
border-top: 2px #1761a6 solid;
border-radius: 0px;
padding: 0 10px 0 10px;
}
.games-schedule .col-md-2 {
padding: 5px;
}
.games-schedule-title {
background-color: #1761a6;
color: #ffffff;
padding: 5px;
margin-bottom: 10px;
}
.games-schedule-title h5 {
font-size: 18px;
text-align: center;
margin: 3px 0 3px 0;
}
.games-schedule-items {
padding: 5px;
margin-bottom: 15px;
}
.last-item {
margin-bottom: 0px;
}
.games-team {
margin-bottom: 12px;
}
.games-team h4 {
color: #59a1e8;
text-align: center;
margin-top: 20px;
border: 1px #c8d8e7 dotted;
padding: 5px;
width: 100%;
}
.games-team img {
border-bottom: 2px #6b9fd3 solid;
margin-bottom: 3px;
}
.games-team span {
color: #de6c10;
font-size: 16px;
}
.games-dash {
border: none;
border-top: 1px #95b3d0 dotted;
}
.games-info p {
margin: 0;
padding: 0;
color: #0a2948;
line-height: 20px;
}
.games-schedule-footer {
background-color: #1761a6;
color: #ffffff;
font-size: 13px;
padding: 5px;
}
.games-schedule-footer p {
margin: 0;
}
.schedule-day{
border : 1px solid #ccc;
}
</style>
</head>
<body>
<br/>
<div class="container text-center">
<h3>PHP ตารางการแข่งขัน</h3>
<div class="row">
<div class="col-md-12 games-schedule">
<div class="well">
<?php
$count_of_teams = count($teams);
//แบบแข่งต่อเนื่อง 2 วันพัก ถัดไปทีละทีม
$c=1;
for($count_match=0;$count_match<2;$count_match++){ //home/away
for($i=1;$i<$count_of_teams;$i++){ //move teams
echo '<div class="col-md-4 schedule-day">';
echo '<div class="col-md-12 games-schedule-title">
<div class="row">
<div class="col-md-12">
<h5>DAY '.$c++.' Games</h5>
</div>
</div>
</div>';
for($a=0;$a<$count_of_teams;$a++){ //all teams are playing
$b = ($a+$i)%$count_of_teams;
if($count_match == 0){
$teamLeft = $teams[$a];
$teamRight = $teams[$b];
$teamLeftLogo = $team_logo[$a];
$teamRightLogo = $team_logo[$b];
}else{
$teamLeft = $teams[$b];
$teamRight = $teams[$a];
$teamLeftLogo = $team_logo[$b];
$teamRightLogo = $team_logo[$a];
}
echo '<div class="games-schedule-items">
<div class="row games-team">
<div class="col-md-5 text-center">
<img width="128" src="'. $teamLeftLogo .'" alt="'.$teamLeft.'">
<span>'.$teamLeft.'</span> [Home]
</div>
<div class="col-md-2">
<h4 class="img-circle">VS</h4>
</div>
<div class="col-md-5 text-center">
<img width="128" src="'. $teamRightLogo .'" alt="'.$teamRight.'">
<span>'.$teamRight.'</span> [Visitor]
</div>
</div>
</div>';
}
echo '</div>';
}
}
?>
</div>
</div>
</div>
</div>
<pre>
<blockquote>
<b>Reference</b>
PHP generate football schedule
https://stackoverflow.com/questions/25742569/php-generate-football-schedule
https://bootsnipp.com/snippets/featured/games-schedule
https://www.iconfinder.com/iconsets/pokemon-go/
</blockquote>
</pre>
</body>
</html>
Date :
2018-08-14 13:51:14
By :
{Cyberman}
ถ้าแบบทัวนาเมนต์ก็ Random แล้ววนลูป INSERT ไปเลย
Code (PHP)
<?php
$players = ["A","B","C","D","E","F","G","H","I","J","L","M","N","O","P","Q"];
shuffle($players);
$players = array_chunk($players, 2);
foreach($players as $match => $player){
echo "Match " . ($match+1) . " : " . $player[0] . " vs. " . $player[1] . "<br>";
}
?>
Date :
2018-08-14 14:01:37
By :
{Cyberman}
ขอบคุณมากๆครับผม
จะนำไปศึกษาแล้วต่อยอดดูนะครับผม
ขอบคุณครับ
Date :
2018-08-15 00:46:53
By :
2140630302645206
Load balance : Server 03