Kan man slå ihop dessa?
Ja, detta borde fungera:
[red]Set rs = objConn.Execute("SELECT * FROM Medlemmar T1 INNER JOIN Arbetsplatser T2 ON T1.arbID = T2.ID WHERE (T1.ID = "& ID &")")[/red]
13 svar · 439 visningar · startad av asp
Jag vill hämta medlemmar ur tabellen Arbetsplatser där han med ID = 2 också arbetar på.
Set rs = objConn("SELECT TOP 1 * FROM Medlemmar WHERE id = " & ID)
Set rs2 = objConn("SELECT * FROM Arbetsplatser WHERE ID = " & rs("arbID"))
Kan man slå ihop dessa?
En anna fråga.
Det är såhär att jag sparar alla säsonger i en tabell som heter Säsonger som har följande fält.
ID anvID Omg Antal Info
När jag slumpar ut en medlemlista vill jag se om någon användare har kommit etta någon gång.
1. Man tar alla poster ur Säsonger som har samma arbID som han som finns i Medlemmar med ID = 2.
2. Man sorterar tabellen via Antal rätt och går igenom säsong för säsong. Om just personen man är på i Medlemslistan (loopen) kom etta skall man skriva ut Vann säsäong XX. Dock inte om Säsong = NUVARANDE SÄSONG.
hoppas verkligen någon kan hjälpa mig
Kan man slå ihop dessa?
Ja, detta borde fungera:
[red]Set rs = objConn.Execute("SELECT * FROM Medlemmar T1 INNER JOIN Arbetsplatser T2 ON T1.arbID = T2.ID WHERE (T1.ID = "& ID &")")[/red]
Den visar tyvärr bara en medlem då. Jag vill visa alla som arbetar på det företaget.
Beskriv hur tabellerna är definierade.
Vad menar du?
Såhär ser de ut
ARBETSPLATS
id namn
MEDLEMMAR
id arbId namn
sedan finns det blir fält fast de är irrelevanta..
select <kolumnerAvIntresse>
from medlemmar m inner join arbetsplats a
on m.arbid = a.id
where m.arbId in (
select arbId
from medlemmar
where id = 2)
Tack LarsG, det blev tillslut du som ordnade detta! :)
Vill inte vara krävande, men är det någon som vill försöka sig på fråga 2? Här kommer en bättre förklaring.
Såhär ser säsongtabellen ut:
ID anvID sasong ratt omg
1 3 1 23 10
2 6 1 13 9
3 4 2 12 7
Det jag vill att den skall plocka ut är att den först plockar ut de användare som arbetar på samma arbetsplats. Precis om koden LarsG gjorde ovanför här.
Sedan skall den loopa igenom alla säsonger (börja på det lägsta och uppåt). Och den skall sortera via antal rätt och plocka ut ID på den som hade flest rätt.
Tanken är att i medlemslistan skall den se om någon har kommit etta någon säsong.
select <kolumnerAvIntresse>,
(select 'Vann senast säsong ' || cast(max(sasong) as varchar(10))
from sasonger s1
where anvid = m.id
and sasong <> <nuvarandeSäsong>
and ratt in (
select max(ratt)
from sasonger s2
where s1.sasong = s2.sasong)) as vinare
from medlemmar m inner join arbetsplats a
on m.arbid = a.id
where m.arbId in (
select arbId
from medlemmar
where id = 2)
Ovanstående kommer förmodligen inte att fungera direkt. Det är visserligen skrivet enligt standard men det är säkert någon detalj som inte stöds av den DBMS som du använder.
Jag använder Access.
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel. i frågeuttrycket '(select 'Vann senast säsong ' || cast(max(sasong) as varchar(10)) from sasonger s1 where anvid = m.id and sasong <> 111 and ratt in (select max(ratt) from sasonger s2 where s1.sasong = s2.sasong))'.
/tips/save.asp, line 7
select <kolumnerAvIntresse>,
(select 'Vann senast säsong ' & cstr(max(sasong))
from sasonger s1
where anvid = m.id
and sasong <> 111
and ratt in (
select max(ratt)
from sasonger s2
where s1.sasong = s2.sasong)) as vinare
from medlemmar m inner join arbetsplats a
on m.arbid = a.id
where m.arbId in (
select arbId
from medlemmar
where id = 2)
Set rs = objConn.Execute("select *, (select 'Vann senast säsong ' & cstr(max(sasong)) from sasonger s1 where anvid = m.id and sasong <> 111 and ratt in (select max(ratt) from sasonger s2 where s1.sasong = s2.sasong)) as vinare from medlemmar m inner join arbetsplatser a on m.arbid = a.id where m.arbId in (select arbId from medlemmar where id = 1)")
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.
/tips/save.asp, line 7
Alltså i den SQL satsen du gjorde ovanför vill jag använda. Sedan kan man väl köra ytterliggare denna SQL sats för att kontrollera om medlemmen har några vinster? Inte bara senaste. Då är det väl bara att ändra where id = "2" till id = objRs("id")
Nedantsående är det enda nya villkoret som skulle kunna ställa till ett typblandningsfel som jag ser.
anvid = m.id
SKall testa när jag kommer hem. Vill passa på att fråga en annan sak. Eftersom SQL satsen hanterar flera tabeller samtidigt så tar den ut ID från fel tabell. Om jag vill hämta ID från medlemmar så tar den från Arbetsplatser. Jag syftar på SQL satsen som du skrev i inlägg 10552. Går detta att ordna ?
Ange explicit alla kolumner som du vill hämta istället för att använda select *.