Mysql连接表间共享数据
我在mysql中的join有一个问题,当orders表中的band_id与bands表中的band_id匹配时,我试图将bands表中的Name字段填充到orders表中的band_Name字段。 这一切都令人困惑,希望得到一些建议或帮助 我的代码Mysql连接表间共享数据,mysql,database,inner-join,jointable,Mysql,Database,Inner Join,Jointable,我在mysql中的join有一个问题,当orders表中的band_id与bands表中的band_id匹配时,我试图将bands表中的Name字段填充到orders表中的band_Name字段。 这一切都令人困惑,希望得到一些建议或帮助 我的代码 <?php } $user = new User(); $user_name = escape($user->data()->username); $res
<?php
}
$user = new User();
$user_name = escape($user->data()->username);
$result = mysql_query("SELECT bands.Name FROM bands LEFT JOIN orders ON bands.Band_id = orders.band_id WHERE orders.band_id = 1 AND user_name = '"mysql_real_escape_string($user_name)"'");
//$result = mysql_query("SELECT * FROM orders WHERE user_name = '".mysql_real_escape_string($user_name)."'");
echo '<table border="1">
<tr>
<th>My bookings</th>
<th>gig No</th>
</tr>';
if(mysql_num_rows($result) > 0){
while($row = mysql_fetch_array($result)){
echo
"<tr>
<td>".$row['user_name']."</td>
<td>".$row['band_id']."</td>
</tr>";
}
}else{
echo "<tr><td>No bookings</td></tr>";
}
echo "</table>";
?>
我认为您对DB的使用有点错误
您的波段
表应包含波段所需的所有信息。例如:
| id | name |
====================
| 1 | The Beatles |
| 2 | Blur |
etc
您的订单
表应包含所有或您的订单数据:
| id | band_id |
================
| 1 | 2 |
| 2 | 1 |
| 3 | 1 |
正如你所看到的,披头士乐队有两个订单,模糊乐队有一个订单
您可以获得如下订单的乐队名称:
SELECT bands.name FROM orders, bands, WHERE orders.id = 1 AND orders.band_id = bands.id;
使用内部联接:
SELECT bands.name FROM bands INNER JOIN orders ON bands.id = orders.band_id WHERE orders.id = 1;
使用左联接:
SELECT bands.name FROM bands LEFT JOIN orders ON bands.id = orders.band_id WHERE orders.id = 1;
更新:
有关联接的更多详细信息,请参阅此图:
摘自。我认为您对DB的使用有点错误
您的波段
表应包含波段所需的所有信息。例如:
| id | name |
====================
| 1 | The Beatles |
| 2 | Blur |
etc
您的订单
表应包含所有或您的订单数据:
| id | band_id |
================
| 1 | 2 |
| 2 | 1 |
| 3 | 1 |
正如你所看到的,披头士乐队有两个订单,模糊乐队有一个订单
您可以获得如下订单的乐队名称:
SELECT bands.name FROM orders, bands, WHERE orders.id = 1 AND orders.band_id = bands.id;
使用内部联接:
SELECT bands.name FROM bands INNER JOIN orders ON bands.id = orders.band_id WHERE orders.id = 1;
使用左联接:
SELECT bands.name FROM bands LEFT JOIN orders ON bands.id = orders.band_id WHERE orders.id = 1;
更新:
有关联接的更多详细信息,请参阅此图:
摘自。我认为您对DB的使用有点错误
您的波段
表应包含波段所需的所有信息。例如:
| id | name |
====================
| 1 | The Beatles |
| 2 | Blur |
etc
您的订单
表应包含所有或您的订单数据:
| id | band_id |
================
| 1 | 2 |
| 2 | 1 |
| 3 | 1 |
正如你所看到的,披头士乐队有两个订单,模糊乐队有一个订单
您可以获得如下订单的乐队名称:
SELECT bands.name FROM orders, bands, WHERE orders.id = 1 AND orders.band_id = bands.id;
使用内部联接:
SELECT bands.name FROM bands INNER JOIN orders ON bands.id = orders.band_id WHERE orders.id = 1;
使用左联接:
SELECT bands.name FROM bands LEFT JOIN orders ON bands.id = orders.band_id WHERE orders.id = 1;
更新:
有关联接的更多详细信息,请参阅此图:
摘自。我认为您对DB的使用有点错误
您的波段
表应包含波段所需的所有信息。例如:
| id | name |
====================
| 1 | The Beatles |
| 2 | Blur |
etc
您的订单
表应包含所有或您的订单数据:
| id | band_id |
================
| 1 | 2 |
| 2 | 1 |
| 3 | 1 |
正如你所看到的,披头士乐队有两个订单,模糊乐队有一个订单
您可以获得如下订单的乐队名称:
SELECT bands.name FROM orders, bands, WHERE orders.id = 1 AND orders.band_id = bands.id;
使用内部联接:
SELECT bands.name FROM bands INNER JOIN orders ON bands.id = orders.band_id WHERE orders.id = 1;
使用左联接:
SELECT bands.name FROM bands LEFT JOIN orders ON bands.id = orders.band_id WHERE orders.id = 1;
更新:
有关联接的更多详细信息,请参阅此图:
摘自。请显示如何“在订单中放入122个带内id”
。我只需简单插入即可。您的用户名栏模棱两可。它是否存在于此查询中使用的任何表中?是的,用户名在orders表中,如果用户名与登录的用户之一匹配,它将显示来自他们的所有交易。请显示如何“将122个带内id放入orders
”的代码。我只需使用一个简单的插入。您的用户名列含糊不清。它是否存在于此查询中使用的任何表中?是的,用户名在orders表中,如果用户名与登录的用户之一匹配,它将显示来自他们的所有交易。请显示如何“将122个带内id放入orders
”的代码。我只需使用一个简单的插入。您的用户名列含糊不清。它是否存在于此查询中使用的任何表中?是的,用户名在orders表中,如果用户名与登录的用户之一匹配,它将显示来自他们的所有交易。请显示如何“将122个带内id放入orders
”的代码。我只需使用一个简单的插入。您的用户名列含糊不清。它是否存在于此查询中使用的任何表中?是的,用户名在orders表中,如果用户名与登录的用户之一匹配,它将显示来自这些用户的所有事务。请修复联接语法,以便我可以更新您的答案。LOL,ok。。。我一直很懒,试图保持事情简单左连接将只匹配orders.id等于1的记录。假设这是一个唯一的列,那么只返回1行。如果您真的很担心,那么在where子句中添加bands.id不为NULL
,但我认为在这种情况下没有必要这样做。我的理解是,总体而言,左连接
比内部连接
更有效。啊,这两种方法都有效。他可以挑选。我已经在我的答案中添加了一个内部连接以及其他内容。我从另一个SO问题中添加了一个SQL连接图来帮助说明问题@嘟嘟声:您不应该将乐队名称存储在两个位置。不要在orders表中存储乐队名称,只需在bands表中存储乐队行的外键。请修复连接语法,以便我可以向上投票您的答案。LOL,好的。。。我一直很懒,试图保持事情简单左连接将只匹配orders.id等于1的记录。假设这是一个唯一的列,那么只返回1行。如果您真的很担心,那么在where子句中添加bands.id不为NULL
,但我认为在这种情况下没有必要这样做。我的理解是,总体而言,左连接
比内部连接
更有效。啊,这两种方法都有效。他可以挑选。我已经在我的答案中添加了一个内部连接以及其他内容。我从另一个SO问题中添加了一个SQL连接图来帮助说明问题@嘟嘟声:您不应该将乐队名称存储在两个位置。不要在orders表中存储乐队名称,只需在bands表中存储乐队行的外键。请修复连接语法,以便我可以向上投票您的答案。LOL,好的。。。我一直很懒,试图保持事情简单左连接将只匹配orders.id等于1的记录。假设这是一个唯一的列,那么只返回1行。如果您真的很担心,那么在where子句中添加bands.id不为NULL
,但我认为在这种情况下没有必要这样做。我的理解是,总的来说,离开了J