Avatar billede sth Novice
24. januar 2013 - 07:54 Der er 6 kommentarer og
1 løsning

Hjælp til SQL

Hej
jeg har brug for lidt hjælp, jeg har en tabel med kommende arbejds dage.
Den ser sådan ud
CREATE TABLE `wkday` (
    `wkday_seq` INT(2) NOT NULL DEFAULT '0',
    `wkday_date` VARCHAR(10) NOT NULL DEFAULT '' COLLATE 'utf8_unicode_ci',
    `wkday_daynbr` INT(1) NOT NULL DEFAULT '0'
)
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM;


jeg har nu brug for at kunne finde den første dato hvor wkday_daynbr er enten 2 eller 6 (mandag eller fredag), og det skal være om minimum om 3 dage, altså bliver det d. 28-01-2013
jeg har prøvet med denne sql:

select * from wkday where wkday_daynbr = 2 or wkday_daynbr =6  order by wkday_seq LIMIT 3,1

men den viser jo selvf kun den 3 dag som enten er dag 2 eller dag 6 altså 04-02-2013

Er der nogen der kan hjælpe mig?




"wkday_seq"    "wkday_date"    "wkday_daynbr"
"1"    "23-01-2013"    "4"
"2"    "24-01-2013"    "5"
"3"    "25-01-2013"    "6"
"4"    "28-01-2013"    "2"
"5"    "29-01-2013"    "3"
"6"    "30-01-2013"    "4"
"7"    "31-01-2013"    "5"
"8"    "01-02-2013"    "6"
"9"    "04-02-2013"    "2"
"10"    "05-02-2013"    "3"
"11"    "06-02-2013"    "4"
"12"    "07-02-2013"    "5"
"13"    "08-02-2013"    "6"
"14"    "11-02-2013"    "2"
"15"    "12-02-2013"    "3"
"16"    "13-02-2013"    "4"
"17"    "14-02-2013"    "5"
"18"    "15-02-2013"    "6"
"19"    "18-02-2013"    "2"
"20"    "19-02-2013"    "3"
Avatar billede sth Novice
24. januar 2013 - 07:55 #1
Her kommer lige data så i evt selv kan indsætte dem hvis det hjælper :-)

INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (1, '23-01-2013', 4);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (2, '24-01-2013', 5);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (3, '25-01-2013', 6);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (4, '28-01-2013', 2);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (5, '29-01-2013', 3);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (6, '30-01-2013', 4);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (7, '31-01-2013', 5);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (8, '01-02-2013', 6);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (9, '04-02-2013', 2);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (10, '05-02-2013', 3);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (11, '06-02-2013', 4);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (12, '07-02-2013', 5);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (13, '08-02-2013', 6);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (14, '11-02-2013', 2);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (15, '12-02-2013', 3);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (16, '13-02-2013', 4);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (17, '14-02-2013', 5);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (18, '15-02-2013', 6);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (19, '18-02-2013', 2);
INSERT INTO `wkday` (`wkday_seq`, `wkday_date`, `wkday_daynbr`) VALUES (20, '19-02-2013', 3);
24. januar 2013 - 08:25 #2
Det var ikke det du spurgte om, men jeg kan ikke dy mig.  I stedet for at give datoen data typen VARCHAR, hvorfor anvender du ikke data type DATETIME?  I så fald behøver du ikke kolonnen wkday_daynbr, du kan anvende DAYOFWEEK(date) funktionen.  Jeg foreslår, at du googler på mysql date and time funktions og studerer disse og så starter igen.  (Men hvis du af gode grunde bevidst har truffet dine valg, så glem min emsighed.)
Avatar billede sth Novice
24. januar 2013 - 08:30 #3
Ja der er nogle helt bestemte grunde til at det i tiderns morgen blev lavet på denne måde, men jo man kan altid lave ting anderledes og man bliver klogere hele tiden.

dog ville jeg nok have ønsket at du havde brugt din tid på at komme med et løsnings forslag, istedet for at at fortælle at jeg skal google det... det er prøvet
24. januar 2013 - 08:46 #4
Det var således ikke velkommen.  Vi må så håbe der er andre medlemmer der bruger deres tid bedre i overensstemmelse med dine ønsker.  Ha' en fortsat god morgen.
Avatar billede sth Novice
24. januar 2013 - 15:31 #5
tak skal du have.

jeg har nu prøvet mig lidt frem med en select inde i en select

select wkday_date, wkday_daynbr from wkday
    WHERE EXISTS
    ( select wkday_date from wkday where (wkday_daynbr = 2     or wkday_daynbr = 6) order by wkday_seq )
order by wkday_seq LIMIT 4,1;

dette viser så ikke kun dage hvor wkday_daynbr  er 2 eller 6

Hjælp.....
Avatar billede sth Novice
24. januar 2013 - 15:46 #6
Løsningen:



select wkday_date,wkday_daynbr from wkday
where  wkday_daynbr in (2,6)
order by wkday_seq LIMIT 1,1
Avatar billede sth Novice
24. januar 2013 - 15:47 #7
jeg lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester