När duplicerade kolumnnamn finns i en databas (ofta över olika tabeller, men kanske till och med i en enda tabell om du använder några mindre vanliga databasfunktioner), måste du kvalificera kolumnnamnet för att undvika tvetydighet. Detta görs genom att specificera tabellen (eller annat omfattning) kolumnen tillhör. Syntaxen varierar något beroende på det specifika databassystemet (SQL -dialekt), men den allmänna principen förblir densamma.
Så här skulle du göra det i flera vanliga databassystem:
1. Använda tabellalias (vanligast och rekommenderat tillvägagångssätt):
Detta är i allmänhet den renaste och mest effektiva metoden. Du ger varje tabell ett kortare alias och använder sedan aliaset för att referera till kolumnerna.
`` `SQL
- Exempel:Antag att du har tabeller "beställningar" och "kunder" både med en kolumn med namnet "ID"
Välj o.id som order_id, c.id som customer_id
Från order o
Gå med i kunder C på O.Customer_ID =C.ID;
`` `
I det här exemplet hänvisar `O.id 'till kolumnen" ID "i tabellen" Order ", och" C.ID "hänvisar till kolumnen" ID "i tabellen" Kunder ". Nyckelordet "som" skapar mer beskrivande kolumnnamn i resultatuppsättningen.
2. Använda fullt kvalificerade tabellnamn:
Detta är mindre kortfattat men fungerar pålitligt. Du använder hela schemat och tabellnamn för att kvalificera kolumnen. Schemadelen är ofta valfri om du arbetar inom standardschemat.
`` `SQL
- Exempel (förutsatt att schema är 'MYDB'):
Välj myDB.orders.id som order_id, myDB.Customers.id som Customer_id
Från myDB.Orders
Gå med MyDB.Customers på MyDB.Orders.Customer_ID =mydb.Customers.id;
`` `
3. Använda databasobjektnamn (för mycket komplexa scenarier):
I exceptionellt komplexa situationer med flera databaser eller scheman som är inblandade kan du behöva kvalificera kolumnen fullt ut med databas, schema och tabellnamn.
Viktiga överväganden:
* databassystem: Den exakta syntaxen (t.ex. citering av konventioner för tabell- och kolumnnamn) kan skilja sig något mellan databaser (MySQL, PostgreSQL, SQL Server, Oracle, etc.). Kontakta ditt databassystems dokumentation för de exakta reglerna.
* Felhantering: De flesta databassystem kommer att producera ett fel om ett kolumnnamn är tvetydigt utan kvalifikation * såvida inte * sammanhanget gör det helt klart vilken kolumn som är avsedd (t.ex. i en "där" klausul som endast hänvisar till en tabell). Det är bästa praxis att alltid kvalificera kolumnnamn när det finns någon potential för tvetydighet.
* läsbarhet: Att använda alias förbättrar avsevärt läsbarheten för dina SQL -frågor, vilket gör dem lättare att förstå och underhålla.
Sammanfattningsvis är det att använda tabellalias den föredragna metoden för att lösa tvetydiga kolumnnamn eftersom det är tydligt, kortfattat och effektivt. Kvalificera alltid dina kolumnnamn när du hanterar potentiell tvetydighet för att förhindra fel och förbättra underhållbarheten för din databaskod.