php - MySQL Fetch 在单个查询中连接具有多行的多个表

标签 php mysql sql database

表A#

C_ID   | C_NAME| C_DATE
-------+-------+--------
100    | ABC   | 11/12/16      
101    | EFG   | 12/12/16     
102    | HIJ   | 22/12/16               

表B

ID   | CID  | TYPE | PRICE
-----+------+----------------------
201  | 100  | 1    | 10
202  | 100  | 2    | 25
203  | 101  | 1    | 32
204  | 101  | 2    | 22
205  | 102  | 1    | 10
206  | 102  | 2    | 25

表C

ID   | UID   | CID    | TYPE | BID PRICE
-----+-------+--------+------+-----
201  | 1001  | 100    | 1    | 20
202  | 1001  | 101    | 2    | 40
203  | 1001  | 102    | 1    | 50
204  | 1001  | 102    | 2    | 100
205  | 1002  | 101    | 1    | 20
206  | 1002  | 101    | 2    | 40
207  | 1002  | 102    | 1    | 50
208  | 1002  | 102    | 2    | 100

大家好,

我想从表 A 中获取所有行,如果请求的用户(即 1001)在表 C 中有任何条目,则相应的值(即 bid_price) 应该返回,否则 bidprice 应该是空

对于给定的 UID 1001,这将是预期结果

   A.C_ID | A.C_NAME| B.C_PRICE_1  | B.C_PRICE_2 | C.C_BID_PRICE_1 | C.C_BID_PRICE_2
    -------+---------+--------------+-------------+-----------------+---------------
100        |ABC      |10            |25           |20               | null
101        |EFG      |32            |22           |null             | 40
102        |HIJ      |10            |25           |50               |100

其中 B.C_Price 1 为 WHere b.Type = 1,B.C_Price 2 为 WHere b.Type = 2

最佳答案

以下是您想要的吗?

SELECT A.C_ID,A.C_NAME,B.TYPE,B.PRICE,C.BID_PRICE
FROM TABLE_A A, TABLE_B B, TABLE_C C
WHERE A.C_ID = B.CID AND B.CID = C.CID
AND C.UOD = {yourUID};

关于php - MySQL Fetch 在单个查询中连接具有多行的多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41357383/

相关文章:

php - 您的SQL语法有误;检查与您的MariaDB服务器版本相对应的手册,以在[closed]附近使用正确的语法

PHP/MySQL - 准备好的语句调试

php - L5.5 使用 SSH 在共享主机上的存储和公共(public)目录之间创建符号链接(symbolic link)

MySQL:GROUP_CONCAT 中的 DISTINCT 删除相同的值(不是重复的)

php - 结果 View 中的分页

php - 将 php 打包到 Objective C 中

php - 在一个查询中更新(或插入)多行

sql - 如何停止sql实例中的单个数据库?

sql - 选择 VARCHAR 时 MySQL 查询速度变慢

SQL : return value in required format