3台SQL查询

问题描述:

我没有与SQL巨大的经验,所以我试图配制具有以下表的查询:3台SQL查询

TABLE `customerdeal` (
    `id` , 
    `customerid` 
    `dealid` 
    PRIMARY KEY (`id`), 
    KEY `dealid` (`dealid`), 
    KEY `customerid` (`customerid`), 


    TABLE `deal` (
    `dealid`, 
    `dname` 
    `description` 
    `restaurantid` 
    PRIMARY KEY (`dealid`), 
    KEY `restaurantid` (`restaurantid`) 


    TABLE `restaurant` (
    `restaurantid` 
    `name` 
`username` 
`password` 
    PRIMARY KEY (`restaurantid`) 

基本上Customerdeal表保存2个ID值 - 一个客户ID和dealid。我已经成功创建了一个SQL代码,它将呈现正在存储在$_customerid值中的登录用户的客户端。

在简单的英语我想要现在做创建一个SQL语句,这将:

  • 获取属于同一行中的$_customerid
  • 使用说dealid呈现的dealid从交易表处理方式下称IDS
  • 拿到餐厅信息怎么样了正在所选dealid行
  • 举行外键 -

我一直在来回尝试不同的方式,但他们都没有工作!如果有人能帮助我,我会很感激!谢谢!

+1

你注意到你已经来回尝试不同的方式。选择你认为最接近的那个,并将其添加到你的问题中。大多数人会想看看你已经尝试过 – ethorn10 2013-02-20 17:58:42

我很惊讶你没有为任何列声明任何类型。

我不确定我是否理解你正在尝试处理你的查询。你能澄清吗?你可以这样做:

select d.dname as dealname, d.description as dealinfo, 
    r.description as restaurantinfo, r.name as restaurant name 
    from deal d, restaurant r, customer c 
    where r.restaurantid = d.restaurantid, d.dealid = c.dealid, 
    c.customerid = 'whatever you want' 
+0

绝对完美!非常感谢!你为我节省了很多时间! :) – user2025934 2013-02-20 18:07:55

如果我正确理解你的问题,下面应该工作。

SELECT d.dname AS DealName, d.description AS DealDescription, r.name AS RestaurantName 
FROM customerdeal c 
INNER JOIN deal d on d.dealid = c.dealid 
INNER JOIN restaurant r on r.restaurantid = d.restaurantid 
WHERE c.customerid = @customerid 

您需要用您的实际客户ID替换@customerid。