Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल 2 कॉलम में एक फ़ील्ड का चयन करें

दो तालिकाओं के बीच डेटा में शामिल होने के लिए विदेशी कुंजी संबंध की प्राथमिक कुंजी होनी चाहिए।

संबंधपरक बीजगणित और सामान्यीकरण के बारे में यही विचार है। अन्यथा, डेटा का सहसंबंध अर्थहीन है।

http://en.wikipedia.org/wiki/Database_normalization

क्रॉस जॉइन आपको सभी संभावनाएं देगा। (1,4), (1,5), (1, 6) ... (3,6)। मुझे नहीं लगता कि आप यही चाहते हैं।

आप दोनों तालिकाओं में एक सरोगेट कुंजी उत्पन्न करने के लिए हमेशा ROW_NUMBER() OVER () फ़ंक्शन का उपयोग कर सकते हैं। डेटा को जिस तरह से आप चाहते हैं उसे OVER () क्लॉज के अंदर ऑर्डर करें। हालांकि, यह अभी भी किसी सामान्य रूप में नहीं है।

संक्षेप में। ऐसा क्यों करते हैं?

त्वरित परीक्षण डेटाबेस। गैर-सामान्य रूप का उपयोग करके खेल के सामान और घरेलू सामानों के उत्पादों को स्टोर करता है।

SELECT के नतीजों का कोई मतलब नहीं है।

-- Just play
use tempdb;
go

-- Drop table
if object_id('abnormal_form') > 0
drop table abnormal_form
go

-- Create table
create table abnormal_form
(
    Id int,
    Category int,
    Name varchar(50)
);

-- Load store products
insert into abnormal_form values
(1, 1, 'Bike'),
(2, 1, 'Bat'),
(3, 1, 'Ball'),
(4, 2, 'Pot'),
(5, 2, 'Pan'),
(6, 2, 'Spoon');

-- Sporting Goods
select * from abnormal_form where Category = 1

-- Home Goods
select * from abnormal_form where Category = 2

-- Does not mean anything to me
select Id1, Id2 from
(select ROW_NUMBER () OVER (ORDER BY ID) AS Rid1, Id as Id1 
 from abnormal_form where Category = 1) as s
join
(select ROW_NUMBER () OVER (ORDER BY ID) AS Rid2, Id as Id2 
 from abnormal_form where Category = 2) as h
on s.Rid1 = h.Rid2

हमें निश्चित रूप से उपयोगकर्ता से अधिक जानकारी चाहिए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में दो तिथियों के बीच घंटों (दशमलव) में अंतर की गणना कैसे करें?

  2. SQL सर्वर डेटाबेस बैकअप निचले संस्करण पर पुनर्स्थापित करें

  3. दो पंक्तियों में दो मानों को स्विच करने के लिए SQL अद्यतन विवरण

  4. मुझे सी # में बाइट या शॉर्ट के बजाय int का उपयोग क्यों करना चाहिए

  5. विथ (नोलॉक) बनाम सेट ट्रांजेक्शन आइसोलेशन लेवल बिना पढ़े पढ़ा