Mysql连接表间共享数据

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

我在mysql中的join有一个问题,当orders表中的band_id与bands表中的band_id匹配时,我试图将bands表中的Name字段填充到orders表中的band_Name字段。 这一切都令人困惑,希望得到一些建议或帮助

我的代码

 <?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