繁体   English   中英

MySQL联接在表之间共享数据

[英]Mysql joining sharing data between tables

我在mysql中加入时遇到问题,当订单表中的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>";
        ?>
SELECT * FROM bands
LEFT JOIN orders as user_orders ON(
user_orders.band_id = bands.band_id
AND user_orders.user_name = "'.mysql_real_escape_string($user_name).'"
)

我认为您在使用数据库方面有些错误。

bands表应包含乐队所需的所有信息。 如:

| id | name        |
====================
| 1  | The Beatles |
| 2  | Blur        |
etc

您的orders表应包含所有或您的订单数据:

| id | band_id |
================
| 1  | 2       |
| 2  | 1       |
| 3  | 1       |

如您所见,披头士乐队有2个订单,而模糊乐队有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;

更新:

请参考此图像以获取有关连接的更多详细信息:

SQL连接示例

取自此堆栈溢出问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM