![]() |
Hej!
Jag har två tabeller(väsentligen sparade queries) i access, jag söker en(eller flera i kombination) fråga(or) där jag får ut de PID som har CID i tabell två som matchar alla CID i tabell 1. Tabell 1 ser ut som såhär: CID 1 4 5 Tabell 2 ser ut såhär: PID CID 7 4 7 1 7 5 7 1 8 5 8 1 19 4 19 1 23 4 23 1 28 1 29 1 31 1 Det jag vill är alltså att få ut värdet 7 i PID(personID), detta eftersom det är den enda som representeras i alla relevanta konferenser(CID) Jag försöker få till en intersect mellan CID och CID men att samtidigt få ut PID.. får det inte att fungera. I mitt huvud borde följande SQL fungera, men det gör det inte. Kod:
SELECT CID FROM [tabell1] |
LEFT JOIN?
Kod:
SELECT tabell1.* tabell2.* FROM tabell1 LEFT JOIN tabell2 ON tabell1.CID=tabell2.CID |
WHERE EXIST() eller WHERE NOT EXIST() då?
|
Korrekt svar är:
Kod:
SELECT pid, cid |
Tack allihopa, men tyvärr är alla era svar fel, för jag vill inte ha en resultatrad om "någon" är matchad, utan bara om "alla" är matchade.
i ovan nämnda fall är tabell 1 "SQL-fråga 8 -delfråga 1" o.s.v. Det vart ganska komplicerat till slut... Huvudfråga Kod:
SELECT PID FROM [SQL-fråga 8 -delfråga 5], [SQL-fråga 8 -delfråga 4] Kod:
SELECT Conference.ID AS CID Kod:
SELECT Författare.PID, Session.Conference AS CID Kod:
SELECT DISTINCT CID AS dCID, PID Kod:
SELECT Count(dCID) AS [count], PID Kod:
SELECT Count(CID) AS [count] |
Är det här bättre (Testkört i Access 2007 och ger enbart 1 tuppel med värdet 7)?
Kod:
SELECT pid Även detta är löst med en enkel sub-select som vi lägger i FROM-klausulen så att vi skapar en "virtuell" tabell, vill man kan man hitta på ett alias för den men det var inte nödvändigt i detta relativt enkla fall. Sub-selecten i WHERE-klausulen är bara till för att räkna raderna i tabell1. Jag har förutsatt att PID och CID är delar av primärnyckeln i tabell2 (är detta riktigt?) för då är exemplet med data fel. |
Alla tider är GMT +2. Klockan är nu 18:45. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson