Hej, skulle behöva hjälp med en SQL sträng. Har 3 tabeller: Person, Info och Bok. Det finns relationer mellan Person->Info, och Bok->Info. I Info tabellen anges vilken person som äger vilken bok. Jag får ett felmeddelande, när jag provar: Jag har visst litet för bråttom... Ett nytt försök: Ingen fara, ser relativt bra ut. Det jag får ut med denna sträng är dock flera värden, Just det... Vi måste filtrera bort de där I1.PersonID = I2.PersonID, dvs där en person äger samma bok som sig själv (självklart). Dessutom kan vi se till att ett personpar bara förekommer en gång.SQL Sträng
Exempel (Info tabellen)
PersonID BokID
1 2
2 4
3 2
Skulle ge att Person 1 och 3 äger Bok 2 tillsammans.
Frågan:
Hur skriver man en sträng som plockar ut "vilka" personer, som äger "vilka" böcker tillsammans?
Hoppas det gick att förstå.
/TomSv: SQL Sträng
SELECT PersonID1, PersonID2, BokID
FROM Info AS I1
INNER JOIN Info AS I2 ON I1.BokID = I2.BokID
Sv: SQL Sträng
"Det angivna fältet "BokID" kan referera till fler än en av de tabeller som är uppräknade i SQL uttryckets FROM-instruktion"...
Vad är det som är galet?Sv: SQL Sträng
<code>
SELECT I1.PersonID, I2.PersonID, I1.BokID
FROM Info AS I1
INNER JOIN Info AS I2 ON I1.BokID = I2.BokID
</code>Sv: SQL Sträng
Så här:
I1.PersonID I2.PersonID BokID
1 1 1
2 1 1
1 2 1
2 2 1
3 3 2
2 2 3
1 1 4
Skulle vilja ha svaret mer specifikt, dvs där endast personer
som äger samma bok visas, typ:
PersonID BokID
1 1
2 1
Går det att ordna på något sätt?Sv: SQL Sträng
<code>
SELECT I1.PersonID, I2.PersonID, I1.BokID
FROM Info AS I1
INNER JOIN Info AS I2 ON I1.BokID = I2.BokID
WHERE I1.PersonID < I2.PersonID
</code>