Avatar billede dingo2 Nybegynder
30. juli 2005 - 15:24 Der er 25 kommentarer og
2 løsninger

SQL problem True/False

Jeg har en access database som jeg skal hente noget fra
men kun de steder hvor der en enten True eller False

Kan godt hente data, hvis jeg ber om noget fra de andre tabeller
men i JA/NEJ tabellen, vil den ikke

Har også prøvet med
SELECT *
FROM Ordre
WHERE k-s = '1'

hvad skal man skrive ved et sådan felt, så den kan forstå det.
Avatar billede nielle Nybegynder
30. juli 2005 - 15:29 #1
Brug 1 i stedet for true og 0 i stedet for false:

SELECT * FROM Ordre WHERE ditFelt=1

... og der skal ikke '-tegn rundt om 1-tallet.
Avatar billede keysersoze Guru
30. juli 2005 - 15:32 #2
det er langt mere sigende at bruge true/false i sql'en end tal;

SELECT * FROM ordre WHERE k-s = TRUE
eller
SELECT * FROM ordre WHERE k-s = FALSE
Avatar billede nielle Nybegynder
30. juli 2005 - 15:33 #3
Korrekt, men det dur altiså ikke i alle Access-versioner.
Avatar billede nielle Nybegynder
30. juli 2005 - 15:35 #4
I øvrigt forståe jeg ikke hvad der menes med "k-s = TRUE" - hvad har en subtraktion at gøre med en boolsk værdi?
Avatar billede keysersoze Guru
30. juli 2005 - 15:35 #5
hvilken version har du oplevet det ikke virker i - har aldrig støt på problemer fra 97 og op?
Avatar billede dingo2 Nybegynder
30. juli 2005 - 15:36 #6
Har jeg prøvet, men det funker ikke.

Den skriver "No value given for one or more required parameters"
Avatar billede dingo2 Nybegynder
30. juli 2005 - 15:38 #7
Den skal hente alt det fra k-s som er FALSE
Avatar billede keysersoze Guru
30. juli 2005 - 15:38 #8
har du en kolonne der hedder "k-s" og som er sat til et ja/nej felt? det er nemlig ikke god skik at bruge "-" i kolonnenavne
Avatar billede nielle Nybegynder
30. juli 2005 - 15:38 #9
dingo2> Hvad er det du eksakt har prøvet som ikke virker?
Avatar billede dingo2 Nybegynder
30. juli 2005 - 15:39 #10
SELECT * FROM Ordre WHERE k-s=1

SELECT * FROM ordre WHERE k-s = TRUE
SELECT * FROM ordre WHERE k-s = FALSE
Avatar billede nielle Nybegynder
30. juli 2005 - 15:42 #11
Som keysersoze spørger efter: Er k-s to felter du trækker fra hinanden, eller et felt som hedder "k-s"?
Avatar billede dingo2 Nybegynder
30. juli 2005 - 15:43 #12
et felt, med masser af True/False

Og den skal så hente det der er false, i det her tilfælde
Avatar billede dingo2 Nybegynder
30. juli 2005 - 15:44 #13
Hvis jeg prøver at hente fra nogle andre felter virker det fint..
Avatar billede nielle Nybegynder
30. juli 2005 - 15:48 #14
Måske virkere dette så:

SELECT * FROM ordre WHERE [k-s] = TRUE

- men det er bestemt ikke pænt at bruge en minus-tegn i et feltnavn. Du brurde omdøbe det.
Avatar billede dingo2 Nybegynder
30. juli 2005 - 19:43 #15
Hey Nielle

SELECT * FROM ordre WHERE [k-s] = TRUE - virker fint

Kan det være fordig at jeg har haft det minus tegn, for så kan jeg godt bruge 1 time og ændre det alle de steder det ligger.
Avatar billede keysersoze Guru
30. juli 2005 - 19:46 #16
ja - det er ingen god idé at bruge specialtegn i hverken tabel- eller kolonnenavne
Avatar billede nielle Nybegynder
30. juli 2005 - 19:58 #17
Det er *helt* sikkert minustegnet som har drillet dig. Den normale betydning af et minustegn er at der er noget som skal trækkes fra hinanden – så det prøver Access så at gøre. Problemet er bare at den ikke kan finde hverken et felt som hedder ”k” eller et som hedder ”s”, og derfor får du så en fejlbesked i stedet.

Tricket, med at sætte [] rundt, om bruges i Access (i andre databaser er det noget andet, som f.eks. et `-tegn i MySQL) til at fortælle Access at ”dette skal opfattes bogstaveligt som det står – det skal ikke fortolkes på nogen måde”. Man bruger det f.eks. hvis man har et felt som man har kaldt ”by”, hvilket jo er et ganske naturligt felt hvis man f.eks. vil gemme en adresse. Uheldigvis er ”by” et reserveret ord som man ikke kan bruge uden videre – det indgår i ”ORDER BY”. Så det må man ikke normalt bruge på anden måde. Hvis man alligevel insistere, så kan man altså omgive det med [] som i ”[by]”.

Jeg synes 100% at du skal bruge den time til at ændre navnet (kan en global find-and-replace virkelig ikke laves hurtigere?). Dels har Access altså et problem med at læse det. Men endnu værre er det at en person, som sidder og skal vedligeholde din kode på et eller andet tidspunkt, automatisk ville læse det som om at der var tale om et regnestykke. Så, om ikke andet, så for at undgå den slags så bør du ændre navnet på det felt.
Avatar billede dingo2 Nybegynder
30. juli 2005 - 19:59 #18
ok.. Det gør jeg så.

En anden ting er at jeg gerne senere skulle kunne hente data fra 2 tabeller

Altså den TABEL hvor FALSE er, har en kolone der hedder PRnr

Den værdi der er i PRnr feks "V16" ville jeg så gerne kunne bruge til at hente alt i en helt anden tabel hvor "V16" er til stedet.. Lyder måske lidt rodet.

Men jeg har ikke sat mig ind i forspørelser, så ved ikke om det er der det skal laves, heller via SQL sætning...
Avatar billede nielle Nybegynder
30. juli 2005 - 20:09 #19
Kunne f.eks. se sådan her ud:

SELECT * FROM ordre, denAndenTabel WHERE nyKSfelt = TRUE AND ordre.PRnr = denAndenTabel.detAndetFelt
Avatar billede dingo2 Nybegynder
30. juli 2005 - 20:27 #20
Det kan sikkert også gøre hurtigere end en time,
men det er fordi at jeg bruger DW, og har en masse under ASP sider, som helst ikke skal fucke up, så jeg skal først fjerne dem, eller tjekke dem om jeg har lavet noget i dem hvor k-s er med, for der er en der bruger databasen som den er, og så går det helt galt hvis jeg ikke specifik ved hvor i hans ASP-sider at den er blevet ændret, men mener dog man kan lave en log af det man ændre..
Avatar billede dingo2 Nybegynder
30. juli 2005 - 20:28 #21
Det prøver jeg lige... bare giv et svar for det andet, så er points dine
Avatar billede nielle Nybegynder
30. juli 2005 - 20:32 #22
Jeg mener nu at de fleste proint bør tilfalde keysersoze for 30/07-2005 15:38:32.

... men jeg lægger da gerne et svar for en lile del af dem. :^)
Avatar billede dingo2 Nybegynder
30. juli 2005 - 20:42 #23
ved ikke hvordan man giver points til begge...

Men jeg deler da gerne ud af mine points, når tingene løkkedes som jeg vil have det.

Den sidste du du sendte funker også helt fint.. Ved du om der er en webside
med forklaringer på SQL sætninger i ACCESS.. Jeg lære lidt hvergang, men vil gerne have noget at slå op i, når jeg sidder kl.lort om natten og bøvler.

Dingo2
Avatar billede keysersoze Guru
30. juli 2005 - 20:44 #24
svar... hvis jeg skal have point...
Avatar billede dingo2 Nybegynder
30. juli 2005 - 20:47 #25
Så er der Points til begge
Avatar billede nielle Nybegynder
30. juli 2005 - 22:46 #26
Jeg har ikke kendskab til nogen specifik Access-SQL-tutorial, men der er sikkeret masser af dem på nettet. Access-SQL er nu heldigvis ikke vildt meget forskellig fra f.eks. MySQL, Oracle, PostgreSQL, MS SQL eller en af de andre SQL varianeter der findes.

Jeg vil dog gerne anbefale denne:

http://sqlzoo.net/

- som faktisk viser nogle af forskellene (som dog primært er at finde i yderkanterne af emnet).
Avatar billede dingo2 Nybegynder
31. juli 2005 - 10:45 #27
Tak
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
Kurser inden for grundlæggende programmering

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