/ Forside/ Teknologi / Udvikling / SQL / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Underlig query (tror jeg nok)
Fra : PlopFun
Vist : 531 gange
100 point
Dato : 23-06-03 14:42

Hvad går galt i denne query ?
SELECT * FROM employees,kitchen_purchase WHERE employees.functionary_based ='1' OR employees.functionary ='1' AND kitchen_purchase.payed_date = 0

Det ser for mig ud til at der sker et eller andet "mombojombo" med AND og OR.
Meningen er at fra tabellen employees skal udvælge de rækker hvor functionary='1' ELLER functionary_based='1'
SAMT hvor payed_date i tabellen kitchen_purchase <= 0

Kan nogen venligst hjælpe mig med det ?
Jeg syntes at have afprøvet alt så vidt jeg formåder, men er ikke særlig erfarren i SQL (Endnu)

På forhånd tak
Svend

 
 
Accepteret svar
Fra : pmbruun

Modtaget 110 point
Dato : 23-06-03 14:56

Du skriver jo ikke, hvorfor du synes, at der går noget galt. Hvad er symptomet?
Er det noget SQL du selv har skrevet, eller noget, du har arvet?

Nuvel, det, der springer i øjnene er, at der ikke er noget, der siger hvilke rækker i kitchen_purchase, som har noget at gøre med hvilke medarbejdere. Desuden er det ganske uklart om der burde stå "(... OR ...) and ..." eller "... OR (... AND ...)". SQL vil opfatte sidstnævnte mulighed når der ikke er sat parenteser, mens din beskrivelse ("SAMT") tyder på, at det burde være det modsatte.

Nå, men der må være et eller andet felt i både employee og kitchen_purchase som identificerer en medarbejder. Det kunne f.eks. hedde "id", men det er ikke lige til at gætte. Lad os sige at det er "id". Så skal der måske stå noget i retning af:

SELECT * FROM employees,kitchen_purchase
WHERE (employees.functionary_based ='1' OR employees.functionary ='1')
AND kitchen_purchase.id = employee.id
AND kitchen_purchase.payed_date = 0

Eller måske slut med "<= 0" - som du skriver.

Peter

Kommentar
Fra : PlopFun


Dato : 23-06-03 15:19

pmbruun ~>

Undskyld hvis jeg ikke formulerede mig tydeligt nok, men åbentbart tydeligt nok til at din kvikke hjerne fangede den
Og det virker også

SELECT * FROM employees,kitchen_purchase
WHERE (employees.functionary_based ='1' OR employees.functionary ='1')
AND kitchen_purchase.empnr = employee.employeenr
AND kitchen_purchase.payed_date <= 0;

Nu skal jeg "bare" lige finde ud af hvordan DISTINCT virke, så jeg kun få de unikke numre ud.

Tak for dit hurtige svar ..
MVH
Svend
. o O (Gad godt vide hvordan jeg får tildelt pmbruun nogle point i det har forum)

Godkendelse af svar
Fra : PlopFun


Dato : 23-06-03 15:20

pmbruun ~>

Undskyld hvis jeg ikke formulerede mig tydeligt nok, men åbentbart tydeligt nok til at din kvikke hjerne fangede den
Og det virker også

SELECT * FROM employees,kitchen_purchase
WHERE (employees.functionary_based ='1' OR employees.functionary ='1')
AND kitchen_purchase.empnr = employee.employeenr
AND kitchen_purchase.payed_date <= 0;

Nu skal jeg "bare" lige finde ud af hvordan DISTINCT virke, så jeg kun få de unikke numre ud.

Tak for dit hurtige svar ..
MVH
Svend
               

Kommentar
Fra : pmbruun


Dato : 23-06-03 15:31

Hej Svend,

Points kom fint ind - ikke at jeg aner, hvad jeg skal med dem...

SELECT DISTINCT sørger for at der aldrig kommer 2 helt ens rækker i svaret.

Peter


Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste