2012-12-29 12 views
8

मैं 3 अलग टेबल बनाया है और इसके लिए कोडिंगयह SQL कोड क्यों काम नहीं कर रहा है?

CREATE TABLE `shirt` (
    `id` int(11) not null, 
    `name` varchar(32), 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

INSERT INTO `shirt` (`id`, `name`) VALUES 
('1', 'vneck'), 
('2', 'scoop neck'); 

CREATE TABLE `shirt_size` (
    `shirtId` int(11) not null, 
    `sizeId` int(11) not null, 
    PRIMARY KEY (`shirtId`,`sizeId`), 
    KEY `sizeId` (`sizeId`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

INSERT INTO `shirt_size` (`shirtId`, `sizeId`) VALUES 
('1', '2'), 
('1', '3'), 
('1', '4'), 
('1', '5'), 
('2', '1'), 
('2', '2'), 
('2', '3'), 
('2', '4'), 
('2', '5'), 
('2', '6'), 
('2', '7'); 

CREATE TABLE `size` (
    `id` int(11) not null, 
    `name` varchar(4), 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

INSERT INTO `size` (`id`, `name`) VALUES 
('1', 'xs'), 
('2', 's'), 
('3', 'm'), 
('4', 'l'), 
('5', '1x'), 
('6', '2x'), 
('7', '3x'); 

है और मैं इस

SELECT shirt.name, size.name 
FROM shirt 
     INNER JOIN 
      shirt_size ON shirt_size.shirtId = shirt.id 
     INNER JOIN 
      size ON size.id = shirt_size.sizeId 

साथ यह क्वेरी करने रहा हूँ, लेकिन मेज है कि केवल परिणाम शर्ट के नाम से पता चलता है, मैं की जरूरत है स्क्रीन पर दिखाने के लिए आकार कॉलम भी। भाग से मैंने shirt, size डाल दिया लेकिन एक त्रुटि हो रही थी। इसमें आगे देखने पर मैंने देखा कि बहुत से लोग केवल पहले भाग का नाम FROM भाग में डाल रहे हैं। मुझे नहीं लगता कि यह size.name कॉलम का प्रतिनिधित्व करने का अनुमान है। मैं क्या गलत कर रहा हूं?

उत्तर

11

उनके पास समान कॉलम नाम है (हालांकि विभिन्न तालिका से)। तुम्हें पता है, स्तंभों में से एक (या दोनों) पर एक ALIAS आपूर्ति की जरूरत जैसे

SELECT shirt.name as ShirtName, 
     size.name as SizeName 
FROM shirt 
     INNER JOIN 
      shirt_size ON shirt_size.shirtId = shirt.id 
     INNER JOIN 
      size ON size.id = shirt_size.sizeId 
+0

धन्यवाद !!!! .. मैं इसे कल रात लगा बाहर है, लेकिन इस सही जवाब है हालांकि मैंने अभी भी इसे चिह्नित किया है। :) – Optiq