webForumDet fria alternativet

Sökfråga från 2 tabeller (snabbt svar)

ASP

15 svar · 267 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Jag sitter och filar på en funktion som måste blir klar tills imorgon.

Det är en sökfråga som ska hämta information från en tabell och sedan göra en sökning ur en annan med informationen från denna.

Ex vi har en medlem som har ID nummer 10
Då ska den leta i tabellen bokningar där kundID är 10. De rader som den hittar ska den plocka ut kursID.

Sedan ska den göra en sökning i tabbelen kurser och visa de kurser man har bokat där kurs_datum inte har passerat.

Jag har inte riktigt kunskapen för att snabbt kunna knapra ihop någon funktion så det vore jätte snällt om någon kunde hjälpa mig. :O

------------------
Adde

Medlem sedan juni 200032 967 inlägg
#2

något sånt härnt kanske?

SELECT * FROM KURSER WHERE kursID IN (SELECT DISTINCT kursID FROM bokningar WHERE kundID = 10) AND kurs_datum >= date()

använder du sql server, byt ut date() mot getdate().

redigering: skall det kanske vara now() i access? det känns nästan så, så här i efterhand...

mvh,

------------------
can i borrow your goat?

[Redigerat av @nders den 20 aug 2001]

Medlem sedan feb. 20012 412 inlägg
#3

Hej!


strSQL = "SELECT * " & _
"FROM tabell1 " & _
"INNER JOIN tabell2 " & _
"on tabell1.fält = tabell2.fält " & _
"where Id = 10 AND " & _
"kurs_datum < en_bra_datediff"

ingen fungerande kod, men jag spånade lite på hur du kan göra.

r: @nders kod är smidigare, men subqueries fungerar inte i bla mysql.

mvh Jörgen

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

[Redigerat av jorgen den 20 aug 2001]

Medlem sedan juni 200032 967 inlägg
#4

tycker att det där borde funka i mysql, men lovar absolut ingenting. :)

------------------
can i borrow your goat?

Medlem sedan jan. 20013 406 inlägg
#5

Har gjort en funktion som fungerar nu.

Set utfardRS = Server.CreateObject( "ADODB.Recordset" )
utfardRS.ActiveConnection = Con
utfardRS.CursorType = adOpenStatic
utfardRS.Pagesize = 100

sqlString = "SELECT utfard_namn, utfard_id " &_
  "FROM utfarder " &_
  "WHERE utfard_ID IN (SELECT DISTINCT utfardID FROM utfarderkunder WHERE userID = " & userID & " ) " &_ 
  "AND utfard_bokningsdag >= getdate() "&_
  "ORDER BY utfard_datum"
utfardRS.Open sqlString
utfardRS.AbsolutePage = pg

Men jag vill få ut ID från tabbelen utfarderkunder för varje utfard som visas.

Jag vill kunna avboka exakt rätt utfärd som man väljer att klicka på.

------------------
Adde

Medlem sedan juni 200032 967 inlägg
#6

nu förstår jag inte.

enligt din originalfråga så är ju utfarder.utfard_id och utfarderkunder.utfardid samma? då har du ju rätt id i fältet utfard_id i ditt recordset?

------------------
can i borrow your goat?

Medlem sedan jan. 20013 406 inlägg
#7

Det id jag menar är från tabellen utfarderkunder och är ordernumret
alltså det unika numret varje rad i databasen får

------------------
Adde

Medlem sedan dec. 200012 464 inlägg
#8

I så fall får du göra en join

sqlString = "SELECT u.utfard_namn, u.utfard_id,uk.id " &_
"FROM utfarder as u,utfarderkunder as uk " &_
"WHERE uk.utfard_ID = uk.utfardID " & _ 
" AND userID = " & userID & " ) " &_ 
"AND u.utfard_bokningsdag >= getdate() "&_
"ORDER BY u.utfard_datum"

utfardRS.Open sqlString
utfardRS.AbsolutePage = pg

Rent modelleringsmässigt så borde du inte behöva någon räknare i tabellen utfarderkunder då userid och utfardid tillsammans är unika.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 21 aug 2001]

Medlem sedan jan. 20013 406 inlägg
#9

Jo det behövs faktiskt en räknare eftersom om en person bokar sig två gånger på samma utfard.

Då vill man ju kunna ta bort en utav dem. Jag vill ju heller inte förhindra att man kan göra bokningar på samma userid eftersom man kanske bokar en kompis.

Jag ska försöka med din funktion får jag några problem frågar jag igen :)

------------------
Adde

Medlem sedan jan. 20013 406 inlägg
#10

Jag fattar inte riktigt nu när jag har satt mig in i sökfrågan.

u.utfard_id ska det skrivas så eller specificerar du bara vilken tabbel det kommer ifrån.

Så här ser tabbelen utfardeKunder ut:
ordernr (identety)
utfardID
userID

Så här ser tabbelen utfarder ut:
utfard_id
utfard_namn
utfard_datum

Kan du skriva om så jag förstår lite bättre så vore det jätte schyst.

------------------
Adde

Medlem sedan feb. 20012 412 inlägg
#11

Hej!

LarsG ger tabellen ett prefix som han senare använder för att ange både tabell och fält, då slipper man skriva ut hela tabellnamnet varje gång samt att du anger vilket fält som hör till vilken tabell.

Annars kan du få fel tex: field Id is ambigius (tror det stavas så :q )

utfarder as u

Ps. Såg att LarsG glömt en parantes i sin kod, som du får lägga till. Ds

mvh Jörgen

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

[Redigerat av jorgen den 22 aug 2001]

Medlem sedan jan. 20013 406 inlägg
#12

Ok nu förstår jag var t glömde han parantesen då?

------------------
Adde

Medlem sedan dec. 200012 464 inlägg
#13

Nja, det är en parentes för mycket efter userID

sqlString = "SELECT u.utfard_namn, u.utfard_id,uk.id " &_
"FROM utfarder as u,utfarderkunder as uk " &_
"WHERE uk.utfard_ID = uk.utfardID " & _ 
" AND userID = " & userID & _ 
"AND u.utfard_bokningsdag >= getdate() "&_
"ORDER BY u.utfard_datum"
utfardRS.Open sqlString
utfardRS.AbsolutePage = pg

------------------
essentitia preter non sans multiplicandum

Medlem sedan feb. 20012 412 inlägg
#14

Hej LarsG!

En fråga jag länge undrat över nu som du kanske vet fast att det inte är SQL (vad jag vet :e )

vad betyder:

essentitia preter non sans multiplicandum

mvh Jörgen

------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***

Medlem sedan jan. 20013 406 inlägg
#15

Nu fungerar det var ett litet fel på raden where uk.utfard_id = uk_utfardID

Ändrade den

sqlString = "SELECT u.utfard_namn, u.utfard_datum, u.utfard_id, uk.ordernr " &_
"FROM utfarder as u, utfarderkunder as uk " &_
"WHERE u.utfard_ID = uk.utfardID " & _ 
" AND userID = " & userID & "  " &_ 
"AND u.utfard_bokningsdag >= getdate() "&_
"ORDER BY u.utfard_datum"
utfardRS.Open sqlString

------------------
Adde

Medlem sedan dec. 200012 464 inlägg
#16

http://cgi.webforum.nu/wf/Forum11/HTML/005458.html#4

------------------
essentitia preter non sans multiplicandum

259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)