2011-07-25 138 views
0

我有两个表:编写SQL查询

PRODUCT_DESCRIPTION(姓名,PRODUCT_ID

产品(数量,stock_status_id,价格,PRODUCT_ID

我所试图做的是运行一个查询,将得到我上述数据,但我不知道如何实现一个连接,以从两个表中获取连接的数据。

解决

我做了以下内容:

SELECT product_description.name, product.quantity,product.price 
FROM product 
INNER JOIN product_description 
ON product.product_id=product_description.product_id 
ORDER BY product_description.name 
+0

您的Product Description表中是否有与'Product'表中的ID匹配的'id'列?如果没有,你是SOL。 – rockerest

+3

你可以包含全表模式吗? –

+0

我已更新rockerest rests的问题回答 –

回答

1

您已在每个表匹配product_id S中的假设下工作,这里有一个查询,将返回你需要使用隐式连接的数据:

SELECT product.product_id, name, quantity, stock_status_id, price 
FROM product, product_description 
WHERE product.product_id = product_description.product_id 

UPDATE:

这个工程,我会期望。以下是可能对您有帮助的两个表转储以及查询的输出。

产品表:

-- 
-- Table structure for table `product` 
-- 

CREATE TABLE IF NOT EXISTS `product` (
    `product_id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(256) COLLATE utf8_unicode_ci NOT NULL, 
    PRIMARY KEY (`product_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ; 

-- 
-- Dumping data for table `product` 
-- 

INSERT INTO `product` (`product_id`, `name`) VALUES 
(1, 'Croissant'), 
(2, 'Danish'); 

PRODUCT_DESCRIPTION表:从上述查询

-- 
-- Table structure for table `product_description` 
-- 

CREATE TABLE IF NOT EXISTS `product_description` (
    `product_id` int(11) NOT NULL, 
    `quantity` int(11) NOT NULL, 
    `stock_status_id` int(11) NOT NULL, 
    `price` double NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

-- 
-- Dumping data for table `product_description` 
-- 

INSERT INTO `product_description` (`product_id`, `quantity`, `stock_status_id`, `price`) VALUES 
(1, 6, 2, 12.5), 
(2, 13, 1, 19.25); 

输出:

"1","Croissant","6","2","12.5" 
"2","Danish","13","1","19.25" 
0

也许这样的事情?

select p.id, p.quantity, p.stock_status_id, p.price, d.name 
from Product p inner join `Product Description` d on d.product_id=p.id 

虽然我仍然不知道什么样的表架构实际上看起来像从问题的描述。

0
SELECT 
    -- name each column you want here 
    -- prefix columns from the PRODUCT table with its alias like so: 
    p.product_id, 

    -- prefix columns from the other table as its alias 
    d.quantity 
FROM 
    PRODUCT p -- name of your PRODUCT table aliased as p 
INNER JOIN  -- join against your other table 
    PRODUCT_DESCRIPTION d -- name of your other table aliased as d 
ON 
    p.product_id = d.product_id -- match the foreign keys 

详情参见INNER JOIN文档。

注意:这不会按原样工作,您需要在SELECT子句中为每个表提供所需的列,并且可能会修复表名以匹配您的应用程序。

+0

我再次调整了我的问题,将继续阅读链接 –