2013-10-28 73 views
0

我想在命名後訂購我的結果。因此需要多個表格。現在我遇到了問題,即使列中有null,我也想對該名稱進行排序。下面你可以看到這應該代表了問題的一個示例數據庫:即使某些引用爲空,也可以獲取數據

我的表

CREATE TABLE IF NOT EXISTS `products` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `desc` varchar(255) NOT NULL, 
    `price` decimal(10,0) NOT NULL, 
    `manufacturer_id` int(11) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; 

CREATE TABLE IF NOT EXISTS `manufacturer` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `title` varchar(255) NOT NULL, 
    `desc` varchar(255) NOT NULL, 
    `website` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; 

我的數據:

INSERT INTO `products` (`id`, `desc`, `price`, `manufacturer_id`) VALUES 
(1, 'book', 12, 1), 
(2, 'cup', 4, 2), 
(3, 'Arbitrary product', 100, NULL); 

INSERT INTO `manufacturer` (`id`, `title`, `desc`, `website`) VALUES 
(1, 'Publisher', 'Lorem ipsum', 'www.stackoverflow.com'), 
(2, 'Cup producer', 'Lorem ipsum', 'www.cup.com'); 

如果我做了SELECT * FROM products比我會得到三種結果。如果我想訂購我有一個像

SELECT p.desc, p.price, m.title 
FROM products p, manufacturer m 
WHERE p.manufacturer_id = m.id 
ORDER BY m.title 

此查詢給了我只有兩個結果,因爲在productsnull價值。製造商稱號後,是否可以對錶products進行排序,即使其中有null

回答

1

使用LEFT JOIN

試試這個:

SELECT p.desc, p.price, m.title 
FROM products p LEFT OUTER JOIN manufacturer m 
ON p.manufacturer_id = m.id 
ORDER BY m.title 
相關問題