mysql查询连接三个表的查询

时间:2014-01-23 08:06:20

标签: mysql

我有一个名为“钱包系统”的系统,它有一个包含三个表的数据库,如下所示:

实体:

  1. wmembers(钱包会员):id,用户名,密码,电子邮件,城市等
  2. wdata:id,wid,bond,bondvalue:
  3. y2014:id,fno,date,status,bond city dno
  4. 关系:

    1. wdata.wid是表wmembers的外键(wmembers.id)
    2. wdata.bond与y2014.fno
    3. 有关系
    4. wdata.bondval与y2014.bond有关系
    5. 我想从wdata为指定的wid 选择所有数据,然后在y2014中搜索它们是否存在列表

          $q=mysql_query("SELECT * FROM wdata1  as a, `y2014` as b
               WHERE a.bvalue = '$pbond' and a.wid='$wid'
               and b.bond='$pbond' and a.bond = b.fno and a.bvalue = b.bond");
      

2 个答案:

答案 0 :(得分:0)

我不明白你的问题。试试这样的事情

SELECT 
m.id,username,password,email,city,
w.id,wid,w.bond,bondvalue, 
y.id,fno,date,status
FROM 
wmember m 
INNER JOIN wadat w ON m.id = w.wid 
INNER JOIN y2014 y ON m.bond = y.bond
WHERE wid = 1

希望wmember和wadat之间的关系wadat wid是wmember中的id。 如果关系不正确,请更新查询中的ON部分

  

ON m.id = w.wid

正确的关系。如果需要关联多个字段,请使用 AND 作为此类

  

ON m.id = w.wid AND m.name = w.name

参考:mysql-using-joins

答案 1 :(得分:0)

我试着改写你的问题,然后我提交答案......

如果您拥有来自wdata的所有记录,并且在表y2014中至少有一条相关记录,请使用此查询

SELECT *
FROM wdata AS w
INNER JOIN  y2014 as y
    ON w.bond = y.fno
        AND w.bondval = y.bond
WHERE w.wid = $wid

否则,如果你想要yd14的相关记录(如果存在)的所有wdata记录试试这个

SELECT *
FROM wdata AS w
LEFT JOIN  y2014 as y
    ON w.bond = y.fno
        AND w.bondval = y.bond
WHERE w.wid = $wid

也许我的加入条件不是您想要的,请检查