FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Mycket flitig postare
|
Har två tabeller, företag och oppettider.
Tabellen oppettider har 7 rader, en för varje veckodag. Det jag skulle vilja göra är att hämta 2 dagar (dagens samt gårdagens) från tabellen öppettider i samma query som jag hämtar företag. Kommer dock inte på någon vettig lösning. Någon som vill bolla lite och komma på något smart? företag id | namn oppettider id | dag | foretag | open | close Där dag kan vara "mon", "tue", "wed", "thu" etc. |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Supermoderator
|
Om jag inte missuppfattat något så är det väl bara att köra något sånt här:
Kod:
SELECT * FROM foretag AS f JOIN oppettider AS o ON o.foretag = f.id WHERE f.id = {företagsid} AND o.dag IN ('mon', 'tue')
__________________
Full-stack developer, free for smaller assignments |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Flitig postare
|
Hoppas jag inte missförstod dig nu, men du kan göra en join på samma tabell flera gånger.
Typ så här (med reservation för fel): Kod:
SELECT foretag.id, foretag.name, idag.open, idag.close, igår.open, igår.close FROM foretag INNER JOIN oppettider AS idag ON (idag.foretag = foretag.id AND idag.dag = ...) INNER JOIN oppettider AS igår ON (igår.foretag = foretag.id AND igår.dag = ...) WHERE foretag.id = ... Senast redigerad av HenrikAI den 2014-01-09 klockan 22:39 |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Returnerar bara 1 record från öppettider-tabeller, den första (vilket är mon i detta fall)
|
|||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Mycket flitig postare
|
Citat:
|
|||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Mycket flitig postare
|
oppettider-tabellen ser ut såhär (företagsid 10)
id | foretag | dag | open | close Citat:
|
|||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Supermoderator
|
Citat:
![]()
__________________
Full-stack developer, free for smaller assignments Senast redigerad av tartareandesire den 2014-01-09 klockan 22:50 |
||
![]() |
![]() |
![]() |
#8 | |||
|
||||
Mycket flitig postare
|
Citat:
Senast redigerad av yakuzaemme den 2014-01-09 klockan 22:54 |
|||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Flitig postare
|
Citat:
Kod:
CREATE TABLE IF NOT EXISTS `foretag` ( `id` int(11) NOT NULL, `name` varchar(256) NOT NULL ); INSERT INTO `foretag` (`id`, `name`) VALUES (1, 'test'); Kod:
CREATE TABLE IF NOT EXISTS `oppettider` ( `id` int(11) NOT NULL, `foretag` int(11) NOT NULL, `dag` varchar(3) NOT NULL, `open` int(11) NOT NULL, `close` int(11) NOT NULL ); INSERT INTO `oppettider` (`id`, `foretag`, `dag`, `open`, `close`) VALUES (1, 1, 'tue', 10, 16), (2, 1, 'mon', 11, 15); Kod:
SELECT foretag.id, foretag.name, idag.open, idag.close, igår.open, igår.close FROM foretag INNER JOIN oppettider AS idag ON ( idag.foretag = foretag.id AND idag.dag = 'tue' ) INNER JOIN oppettider AS igår ON ( igår.foretag = foretag.id AND igår.dag = 'mon' ) WHERE foretag.id =1 Kod:
id | name | open | close | open | close 1 | test | 10 | 16 | 11 | 15 Senast redigerad av HenrikAI den 2014-01-09 klockan 23:04 |
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Supermoderator
|
Alltså, du får två rader som resultat vilket du också ska få. Huruvida du sedan gör två objekt eller inte beror helt på din kodstruktur, det har inget med databasfrågan att göra.
__________________
Full-stack developer, free for smaller assignments |
||
![]() |
![]() |
Svara |
|
|