I have two tables one named Person, which contains columns ID and Name and the second one, named Relation, which contains two columns, each of which contains an ID of a Person. It’s about a relation between customer and serviceman. I’d like to Join these two tables so that I’ll have names of people in every relation. Is it possible to write this query with some kind of joining?
EDIT::
I must do something wrong, but it’s not working. I had tried a lot of forms of so looking queries, but I had been only getting one column or some errors. It’s actually the school task, I have it already done (with different JOIN query). Firstly I had been trying to do this, but I’d failed: It seems to be very common situation, so I don’t know why it’s too complicated for me..
Here are my tables:
CREATE TABLE Oprava..(Repair) (
KodPodvozku INTEGER PRIMARY KEY REFERENCES Automobil(KodPodvozku),
IDzakaznika..(IDcustomer) INTEGER REFERENCES Osoba(ID),
IDzamestnance..(IDemployee) INTEGER REFERENCES Osoba(ID)
);
CREATE TABLE Osoba..(Person) (
ID INTEGER CONSTRAINT primaryKeyOsoba PRIMARY KEY ,
Jmeno..(Name) VARCHAR(256) NOT NULL,
OP INTEGER UNIQUE NOT NULL
);
It’s in Czech, but the words in brackets after “..” are english equivalents.
PS: I am using Oracle SQL.
Assuming your tables are:
Using standard SQL:
Further explanation
The join creates the following table:
Where
p1.id=relations.customer_id, andp2.id=relations.serviceman_id. TheSELECTclause chooses only the names from theJOIN.Note that if all the ids from
relationsare also inpersons, the result size would be exactly the size of therelationstable. You might want to add a foreign key to verify that.