首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql连接表间的共享数据

Mysql连接表间的共享数据
EN

Stack Overflow用户
提问于 2014-01-19 16:50:29
回答 2查看 702关注 0票数 0

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

我的代码

代码语言:javascript
复制
 <?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>";
        ?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-20 01:44:41

代码语言:javascript
复制
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).'"
)
票数 2
EN

Stack Overflow用户

发布于 2014-01-19 17:01:08

我认为你对数据库的使用有点错误。

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

代码语言:javascript
复制
| id | name        |
====================
| 1  | The Beatles |
| 2  | Blur        |
etc

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

代码语言:javascript
复制
| id | band_id |
================
| 1  | 2       |
| 2  | 1       |
| 3  | 1       |

如你所见,甲壳虫乐队有两个订单,蓝光乐队有一个订单。

您可以获得这样的订单的乐队名称:

代码语言:javascript
复制
SELECT bands.name FROM orders, bands, WHERE orders.id = 1 AND orders.band_id = bands.id;

使用内部连接:

代码语言:javascript
复制
SELECT bands.name FROM bands INNER JOIN orders ON bands.id = orders.band_id WHERE orders.id = 1;

使用左联接:

代码语言:javascript
复制
SELECT bands.name FROM bands LEFT JOIN orders ON bands.id = orders.band_id WHERE orders.id = 1;

更新:

有关联接的详细信息,请参阅此图像:

取自this stack overflow question

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21219634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档