webForumDet fria alternativet

db-arkitektur bakom bokningsfunktion

Databaser & SQLur Databashanterare & SQL

4 svar · 566 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#1

Hej! Sitter här och försöker bygga en liten bokningssnurra till en konferens. Så här ska det fungera:

Det finns 10 mötestillfällen under dagen och ca 20 olika bord att sitta vid. Systemet visar en lista där besökaren väljer vilket eller vilka företag han eller hon vill träffa. Systemet ska därefter automatiskt sätta ihop besökare och företag med varandra, tilldela dem en tid och ett bord.

Så här ser min design ut för närvarande:

Users
---------------
UserID
UserName
Email

Companies
---------------
CompanyID
Representant

MeetingTables (alla bord och deras respektive tider)
-------------------------------------
MeetingTableID
TableNumber
TimeForMeeting

Meetings (tabellen som ska sätta ihop allt)
-------------------------------------
MeetingID
MeetingTableID
UserID
CompanyID

Men jag får inte till den viktigaste frågan... jag försöker få fram för varje användare vilka företag, tider och bord som är lediga...

Medlem sedan jan. 20022 440 inlägg
#2

du bör ju gruppera på datum och sparar ett datum i meetingtime. Då kan du ju hämta alla poster som inte har någon meetingtime

Medlem sedan sep. 2005673 inlägg
#3

Har gjort om den lite nu (har ändrat i det urspungliga inlägget). En mer konkret fråga:

Om jag har en tabell med registrerade tider på det här sättet:

Tabell 1

id tid
1  13:00
1  14:00
2  13:00
2  15:00  
3  14:00

...och så har jag en tabell med möjliga tider:

Tabell 2

id tid
1  13:00
2  14:00
3  15:00

...så skulle jag utifrån detta vilja få fram vilka tider som _inte_ är använda för respektive ID i tabell 1. Vill alltså få fram följande:

id  ledig
1  15:00
2  14:00
3  13:00
3  15:00

Får inte ihop det, blir lixom bakvänt på något vis. Tänker jag helt galet?

Medlem sedan jan. 20022 440 inlägg
#4

En bordstabell och en tidstabell sedan knyter du samman det i en bokningstabell.

Bokningstabellen ser ut som:

bokID	bordsID		tidsID
1		1			3

Select * from tblTid where tidsId not in
	(select tidsID from tblBokningar where tblBokningar.tidsID = tblTid.tidsID) 
and not in
	(select bordsID from tblBokningar where tblBokningar.bordsID = tblTid.bordsID)

Tyvärr är jag inte LarsG min kod kommer nog inte fungera men det du ska göra är i alla fall att hämta posterna där inte bords och tidsID finns. Jag klarar inte sånt här i huvudet tyvärr, måste sitta hemma och pula i visual studio för att få det å fungera men förstår du vartåt jag vill komma?

Medlem sedan jan. 20022 440 inlägg
#5

Det blir väl lite enklare ändå. Har följande förslag till dig. Tror att det kan fungera:

tblBokat (Bokade tider)

id	tidsid
1	1		
2	3		
3	5	

tblTider (Möjliga tider)

id	tid		bordsid
1	13:00	1
2	14:00	1
3	15:00	1

tblBord	(bokningsbara bord)

id	titel
1	konferensbord 1

select 
	tblBord.titel, tblTider.Tid
from
	tblBord
	inner join tblTider on tblTider.bordsid = tblBord.id
	inner join tblBokat on tblBokat.bordsid = tblBord.id
where (tblBokat.tidsid <> tblTider.id)
140 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)