11. december 2003 - 15:11Der er
24 kommentarer og 1 løsning
Jeg er begyndt at blive træt af SQL Server genereret queries
Følgende er pissenemt at lave på en SQL Server, men pisse irriterende for at køre i MySQL, pga microsoft ikke følger SQL standarderne.
Selvom 'row' er et reserveret ord, bruger jeg en ældre version af MySQL, hvor der ikke er nogen problemer. Så det er rent syntaxen, der er noget galt med.
SELECT theater.IDNR AS THEATER_ID, theater.NAME AS THEATER_NAME, row.NAME AS ROW_NAME, seat.SEATNUMBER, seat.IDNR AS SEAT_ID, status.NAME AS STATUS FROM status INNER JOIN seat_reservation ON status.IDNR = seat_reservation.STATUS_ID RIGHT OUTER JOIN theater INNER JOIN row INNER JOIN seat ON row.IDNR = seat.ROW_ID ON theater.IDNR = row.THEATER_ID INNER JOIN eventshow ON theater.IDNR = eventshow.THEATER_ID ON seat_reservation.SHOW_ID = eventshow.IDNR AND seat_reservation.SEAT_ID = seat.IDNR WHERE (eventshow.IDNR = 1) AND (row.THEATER_ID = 1) ORDER BY row.NAME, seat.SEATNUMBER DESC
Og det kan måske være svært at få dem vendt rigtigt. Så måske på den gamle måde igen.
Men det er svært med OUTER JOIN.
Du kan prøve med:
SELECT theater.IDNR AS THEATER_ID, theater.NAME AS THEATER_NAME, row.NAME AS ROW_NAME, seat.SEATNUMBER, seat.IDNR AS SEAT_ID, status.NAME AS STATUS
FROM theater, row, seat, eventshow, status, seat_reservation
WHERE row.IDNR = seat.ROW_ID AND theater.IDNR = row.THEATER_ID AND theater.IDNR = eventshow.THEATER_ID AND (seat_reservation.SHOW_ID IS NULL OR seat_reservation.SHOW_ID = eventshow.IDNR) AND (seat_reservation.SEAT_ID IS NULL OR seat_reservation.SEAT_ID = seat.IDNR) AND (status.IDNR = seat_reservation.STATUS_ID) AND eventshow.IDNR = 1 AND row.THEATER_ID = 1
SELECT theater.IDNR AS THEATER_ID, theater.NAME AS THEATER_NAME, row.NAME AS ROW_NAME, seat.SEATNUMBER, seat.IDNR AS SEAT_ID, status.NAME AS STATUS
FROM theater, row, seat, eventshow, status, seat_reservation
WHERE row.IDNR = seat.ROW_ID AND theater.IDNR = row.THEATER_ID AND theater.IDNR = eventshow.THEATER_ID AND (seat_reservation.SHOW_ID IS NULL OR seat_reservation.SHOW_ID = eventshow.IDNR) AND (seat_reservation.SEAT_ID IS NULL OR seat_reservation.SEAT_ID = seat.IDNR) AND (status.IDNR IS NULL OR seat_reservation.STATUS_ID IS NULL OR status.IDNR = seat_reservation.STATUS_ID) AND eventshow.IDNR = 1 AND row.THEATER_ID = 1
SELECT theater.IDNR AS THEATER_ID, theater.NAME AS THEATER_NAME, row.NAME AS ROW_NAME, seat.SEATNUMBER, seat.IDNR AS SEAT_ID, status.NAME AS STATUS FROM status INNER JOIN seat_reservation ON status.IDNR = seat_reservation.STATUS_ID RIGHT OUTER JOIN seat INNER JOIN theater INNER JOIN eventshow ON theater.IDNR = eventshow.THEATER_ID INNER JOIN row ON theater.IDNR = row.THEATER_ID ON seat.ROW_ID = row.IDNR ON seat_reservation.SHOW_ID = eventshow.IDNR AND seat_reservation.SEAT_ID = seat.IDNR WHERE (seat_reservation.SHOW_ID IS NULL OR seat_reservation.SHOW_ID = eventshow.IDNR) AND (seat_reservation.SEAT_ID IS NULL OR seat_reservation.SEAT_ID = seat.IDNR) AND (eventshow.IDNR = 1) AND (row.THEATER_ID = 1) ORDER BY row.NAME, seat.SEATNUMBER DESC
Jeg har hævet pointsatsen, på spørgsmålet, under et 'nyt' oprettet spørgsmål.
Synes godt om
Ny brugerNybegynder
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.