Avatar billede decrypto Nybegynder
14. december 2003 - 17:56 Der er 35 kommentarer og
2 løsninger

Næsten ved målet

Først vil jeg vise mine db struktur -> http://www.webdecor.dk/gfx/db_tbl.gif

Min query ser således ud.
--------------------------------------------------------
select theater.IDNR AS THEATER_ID, eventshow.IDNR AS EVENT_ID, theater.NAME AS THEATER_NAME, row.NAME AS ROW_NAME, seat.SEATNUMBER, seat_reservation.STATUS_ID

from (((eventshow inner join theater on theater.IDNR = eventshow.THEATER_ID)

inner join row on row.THEATER_ID = theater.IDNR)

inner join seat on seat.ROW_ID = row.IDNR)

left outer join seat_reservation ON
seat_reservation.SEAT_ID = seat.IDNR

where eventshow.IDNR = 1 AND theater.IDNR=1 order by row.NAME, seat.SEATNUMBER DESC
----------------------------------------------------

Mit problem er at jeg får dubletter, som i virkeligheden er sæde nummer til en anden eventshow.IDNR. Det virker som om selv at jeg spørger efter 'where eventshow.IDNR = 1', så giver den mig ogå for 'eventshow.IDNR = 2' el. 3 osv.

Hvad skal jeg rette således jeg kun henter udfra et eventshow.IDNR????

Der lækre point her at hente drenge....
Avatar billede decrypto Nybegynder
14. december 2003 - 17:58 #1
Hvis I ikke forstår ovenstående smøre, så se på mit link, og se hvilket udtræk jeg ønsker. Sql her virker desværre kun på SQL Server og ikke i MySQL.
Avatar billede nielsbrinch Nybegynder
14. december 2003 - 18:08 #2
Hvilket program er det du har taget screenshot af?
Avatar billede sth Novice
14. december 2003 - 18:08 #3
Hvilket program bruger du til at at lave join osv. som vis på  http://www.webdecor.dk/gfx/db_tbl.gif ?

Det ligner jo næsten access
Avatar billede decrypto Nybegynder
14. december 2003 - 18:13 #4
Ja det program er SQL Server, men querien virker ikke i MYSQL
Avatar billede decrypto Nybegynder
14. december 2003 - 18:14 #5
Det er mere det udtræk der er nederst på siden, jeg er intresseret i. Og min query jeg har skrevet ind her, er rimelig tæt på.
Avatar billede arne_v Ekspert
14. december 2003 - 18:23 #6
Umiddelbart virker din where eventshow.IDNR = 1 helt korrekt.

Kan du copy paste output fra ovenstående SQL i MySQL på samme data
som MS SQL output fra linket ?

Bare for at give os lidt at arbejde med ...
Avatar billede decrypto Nybegynder
14. december 2003 - 18:32 #7
THEATER_ID  EVENT_ID  THEATER_NAME  ROW_NAME  SEATNUMBER  STATUS_ID 
  1          1        Theater 1    A            28        1        <-
  1          1        Theater 1    A            28        1        <-
  1          1        Theater 1    A            27        NULL
  1          1        Theater 1    A            26        1
  1          1        Theater 1    A            25        NULL
  1          1        Theater 1    A            24        NULL
  1          1        Theater 1    A            23        2

osv.
Avatar billede decrypto Nybegynder
14. december 2003 - 18:33 #8
Jeg har sat pile udfra fejlen, man skulle tro det var dubletter, men det viser sig at den også henter for eventshow.IDNR = 2
Avatar billede decrypto Nybegynder
14. december 2003 - 18:33 #9
Hmmm tabellen står ikke pænt men håber I forstår problemet.
Avatar billede arne_v Ekspert
14. december 2003 - 18:35 #10
eventshow.IDNR = EVENT_ID og den er 1 for alle rows

men der kan jo være andre ting der duplikerer

Har du prøvet noget så simpelt som:

SELECT DISTINCT ...

?
Avatar billede decrypto Nybegynder
14. december 2003 - 18:36 #11
Jeg kan heller ikke lave en group by eller i min kode ignorere hvis seatnumber er det samme, da den henter for samtlige eventshow.IDNR
Avatar billede decrypto Nybegynder
14. december 2003 - 18:37 #12
Hvor skal jeg lige skrive den henne?
Avatar billede arne_v Ekspert
14. december 2003 - 18:38 #13
Bare erstat
  select
med
  select distinct
resten det samme
Avatar billede decrypto Nybegynder
14. december 2003 - 18:40 #14
Hvis jeg skifter det 1 tal ud med 2 viser den mig også stadigvæk reservationer for 1.
Avatar billede decrypto Nybegynder
14. december 2003 - 18:41 #15
Jo den fjerner dupletter.
Avatar billede decrypto Nybegynder
14. december 2003 - 18:42 #16
Men billedet er stadigvæk forkert.

Jeg har har kun foretaget en reservation på eventshow.IDNR 3, men den viser mig stadigvæk reservation dvs-> status på eventshow.IDNR 1.
Avatar billede decrypto Nybegynder
14. december 2003 - 18:45 #17
THEATER_ID  EVENT_ID  THEATER_NAME  ROW_NAME  SEATNUMBER  STATUS_ID 
  1          3        Theater 1    A          28          1    <- reseveret for event_id 3
  1          3        Theater 1    A          27        NULL  <- Dette er rigtigt for 3 men 1 er også null
  1          3        Theater 1    A          26          1    <- Dette er ikke rigtigt burde være null men 1 for event id 1
Avatar billede decrypto Nybegynder
14. december 2003 - 18:47 #18
Jeg er ved at få spat af forsøg at knække den nød. -> arne_v dig har jeg haft rigtig meget fat i, ved du hvordan jeg får mit udtræk til at ligne det jeg har vist link til?
Avatar billede decrypto Nybegynder
14. december 2003 - 18:49 #19
Det hele drejer sig om denne query, min kode vil virke fint, hvis jeg bare kan få det udtræk med 'dinglende' null værdier. -> 'dangling tuples' på engelsk
Avatar billede decrypto Nybegynder
14. december 2003 - 18:51 #20
Nu har jeg lovet mig selv at lære SQL på den rigtige måde, og ikke være afhængig af MS ikke standardiserede SQL.
Avatar billede decrypto Nybegynder
14. december 2003 - 18:53 #21
Hmm er der nogen, der ved om der er et officielt SQL sted jeg kan poste mit problem?
Avatar billede arne_v Ekspert
14. december 2003 - 18:54 #22
Jeg er desværre ret eget på bar bund.

:-(
Avatar billede arne_v Ekspert
14. december 2003 - 18:57 #23
Avatar billede decrypto Nybegynder
14. december 2003 - 18:57 #24
Ok, så må jeg prøve at bruge et par timer mere. Jeg gider ikke at lave 2 queries, hvis man kan klare med en.
Avatar billede arne_v Ekspert
14. december 2003 - 18:58 #25
Hvis performance ikke er afgørende så overvej at lav din MS SQLServer
query mere step by step via temporære tabeller.
Avatar billede decrypto Nybegynder
14. december 2003 - 19:16 #26
Jo men understøtter MySQL det?
Avatar billede arne_v Ekspert
14. december 2003 - 19:24 #27
http://www.mysql.com/doc/en/CREATE_TABLE.html

From MySQL Version 3.23, you can use the TEMPORARY keyword when you create a table. The temporary table is visible only to the current connection, and will be deleted automatically when the connection is closed. This means that two different connections can both use the same temporary table name without conflicting with each other or with an existing table of the same name. (The existing table is hidden until the temporary table is deleted.) From MySQL 4.0.2 on, you must have the CREATE TEMPORARY TABLES privilege to be able to create temporary tables.
Avatar billede decrypto Nybegynder
14. december 2003 - 19:29 #28
Mange tak. -> Arne vil det hjælpe hvis jeg sendte dig et SQL script, der kan generere basen for dig, så du kan se, hvad jeg prøver på.
Avatar billede arne_v Ekspert
14. december 2003 - 19:40 #29
Måske.

Jeg kan godt prøve at bruge 10 minutter på det.

arne_v@mail.danbbs.dk
Avatar billede decrypto Nybegynder
14. december 2003 - 19:46 #30
Jeg sender det til dig imorgen.
Avatar billede trer Nybegynder
14. december 2003 - 22:54 #31
decrypto: Problemet er ikke "MS ikke standardiserede SQL" - problemet er, at MySQL ikke fortolker SQL'en korrekt!

Har du checket hvad version af MySQL du kører det mod - og MySQL.com for kendte fejl i implementeringen af outer joins på den verison?  Det lugter af, at der er noget der - evt. prøv at logge en bug hos MySQL.

Umiddelbart ville jeg have foreslået et par sub-queries for at løse det - men det går jo desværre ikke :-(
Avatar billede decrypto Nybegynder
15. december 2003 - 16:12 #32
-> Arne Jeg har sendt dig en mail tidligere idag.
Avatar billede arne_v Ekspert
15. december 2003 - 16:17 #33
Jeg har også modtaget den. Men jeg kan først kigge på det efter arbejde.
Avatar billede arne_v Ekspert
15. december 2003 - 20:53 #34
svar
Avatar billede decrypto Nybegynder
20. januar 2004 - 10:17 #35
Her points
Avatar billede decrypto Nybegynder
20. januar 2004 - 10:17 #36
Den har problemer med at give points
Avatar billede arne_v Ekspert
20. januar 2004 - 10:20 #37
svar igen
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