我有一个问题无法解决。我正在为锦标赛做双人发电机。
我有两张桌子。 第一个表包含用户名和用户ID。 第二个表包含match_id,round,user1_id,user2_id
Table 1
user_id username
21 John
22 Peter
23 Ana
24 Dan
Table 2
match_id round user1_id user2_id
1 1 21 22
2 1 23 24
3 2 21 23
4 2 24 22
.
.
.
我想回应
Round 1
John - Peter
Ana - Dan
Round 2
John - Ana
Dan - Peter
Round 3
...
Round 4
...
只能用一个SQL代码完成,所以我可以从Table1获取user1_id和user2_id的两个用户名吗?
要通过user_id只检索一个用户名,我没有遇到任何问题,而且效果很好:
$sql = "SELECT table1.username, table3.won
FROM table1
INNER JOIN table3 ON table1.user_id=table3.user_id;";
我知道我可以在Table2中使用user_ids而不是使用用户名,但我想像我上面解释的那样这样做。
答案 0 :(得分:0)
你可以这样使用
Method Time [s]
first.viewitems() <=second.viewitems() 0.9
set(first.items()).issubset(second.items()) 7.3
len(set(first.items()) & set(second.items())) == len(first) 8.5
all(first[key] == second.get(key, sentinel) for key in first) 6.0
稍后回复结果
SELECT T1.USERID_1, T2.USERID_2
FROM TABLE2 T1
JOIN TABLE2 T2
ON T1.MATCH_ID = T2.MATCH_ID
**
更新
**
echo 'Round 1 <br \>';
echo $result1.' vs '.$result2;
这可能会对你有所帮助。如果没有评论......
答案 1 :(得分:0)
$sql = "SELECT table1.username FROM table1 WHERE user_id IN (SELECT table2.user_id1,table2.user_id2 FROM table2 WHERE table2.match_id = 1);
它将帮助您满足您的需求。
尝试这样的事情......
答案 2 :(得分:0)
select CONCAT((select username from table1 t1 where t.user_id=t1.user_id=t.user_id) ,'-',(select username from table1 t1 where t.user_id=t1.user_id=t.user_id)) from table2 t
或强>
select CONCAT(t1.username,'-',t3.username) from table2 t2
inner join table1 t1 on t1.user_id=t2.user_id
inner join table1 t3 on t3.user_id=t2.user_id
答案 3 :(得分:0)
我认为这样的事情应该有效:
$headers .= "Content-Type:application/octet-stream ";
$headers .= "name=\"".$_name."\"r\n";
$headers .= "Content-Transfer-Encoding: base64\r\n";
$headers .= "Content-Disposition: attachment; ";
$headers .= "filename=\"".$_name."\"\r\n\n";
$headers .= "".$file."\r\n";
$headers .= "--".$num."\r\n";