2010-05-17 11 views
1

Je ces deux tables,Mysql valeur de retour 0 dans le fetch résultat

-- 
-- Table structure for table `t1` 
-- 

CREATE TABLE `t1` (
    `pid` varchar(20) collate latin1_general_ci NOT NULL, 
    `pname` varchar(20) collate latin1_general_ci NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; 

-- 
-- Dumping data for table `t1` 
-- 

INSERT INTO `t1` VALUES ('p1', 'pro1'); 
INSERT INTO `t1` VALUES ('p2', 'pro2'); 

-- -------------------------------------------------------- 

-- 
-- Table structure for table `t2` 
-- 

CREATE TABLE `t2` (
    `pid` varchar(20) collate latin1_general_ci NOT NULL, 
    `year` int(6) NOT NULL, 
    `price` int(3) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; 

-- 
-- Dumping data for table `t2` 
-- 

INSERT INTO `t2` VALUES ('p1', 2009, 50); 
INSERT INTO `t2` VALUES ('p1', 2010, 60); 
INSERT INTO `t2` VALUES ('p3', 2007, 200); 
INSERT INTO `t2` VALUES ('p4', 2008, 501); 

ma requête est,

SELECT * 
FROM `t1` 
LEFT JOIN `t2` ON t1.pid = t2.pid 

Obtenir le résultat,

pid  pname pid  year price 
p1  pro1 p1 2009 50 
p1  pro1 p1 2010 60 
p2  pro2 NULL NULL NULL 

Ma question est , je veux obtenir la valeur du prix est 0 au lieu de NULL. Comment puis-je écrire la requête pour obtenir la valeur de prix est 0.

Merci d'avance pour l'aide.

Répondre

3

vous devez utiliser IFNULL

SELECT pid,pname,pid,year,IFNULL(price,0) 
    FROM `t1` 
    LEFT JOIN `t2` 
    ON (t1.pid = t2.pid) 

IFNULL (field_to_test, value_to_show) retournera 'value_to_show' lorsque le champ 'field_to_test' est nul, quand field_to_test est non nul, il est retourné directement.

+2

Je pense que c'est IFNULL dans MySQL http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_ifnull – Oskar

+0

@Oskar: vous avez raison. Je l'ai réparé, merci! – lexu