Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Kombinerad SQL query

Postades av 2003-09-10 12:41:55 - Peter Björklund, i forum databaser, Tråden har 10 Kommentarer och lästs av 1345 personer

Har två tabeller som jag vill lägga in data i.

Booking tabellen har fälten: IDBooking,RoomCategory,NrOfAdults,NrOfChildren,INPCategory,ExtraBed,BabyCrib,SortOfPayment,CheckInDate,CheckOutDate,Remarks,SubSum,TotSum,CheckInStatus,CheckOutStatus,IDGuest

Guest tabellen har fälten:
IDGuest,FirstName,LastName,Adress,ZipCode,City,State,Country,Telephone,Fax,Email

Guests primärnyckel är alltså främmande nyckel i booking.

Jag vill ha en smart, kombinerad INSERT/SELECT/INSERT sats till detta så jag slipper att köra INSERT INTO GUEST, SELECT ... FROM GUEST och sedan INSERT INTO BOOKING i tre olika omgångar.

Har för mig att jag sett liknande frågor och svar här tidigare.

Tack!


Svara

Sv: Kombinerad SQL query

Postades av 2003-09-10 13:08:50 - Per Malmén

Skapa en stored procedure (om du kör SQL-Server)

CREATE PROCEDURE ps_INSERT_booking
@firstName varchar(50),
@enAnnanVariabel Integer
...ännu fler variabler
AS
@DECLARE GID Integer
INSERT INTO GUEST(firstName,...fler variabler) VALUES(@firstName,...)
SET GID = (SELECT @@IDENTITY)
INSERT INTO BOOKING(bla,bla,IDGuest) VALUES(nlanal,mnlöan,@GID)


så får du allt gjort i ett enda anrop till

EXEC ps_INSERT_booking 'Kalle', 4,......osv


Svara

Sv: Kombinerad SQL query

Postades av 2003-09-10 13:14:57 - Peter Björklund

Hmmm.. jag kör till en Accessbas.

Skulle vilja ha ett rent SQL anrop. typ INSERT INTO...(SELECT...(INSERT ...)) och så är det säkert en del JOINS mm mm.




Svara

Sv: Kombinerad SQL query

Postades av 2003-09-10 14:25:59 - Andreas Hillqvist

Det finns lite magi med Access som gör att du kan infoga informationen du vill med bar en Insert. Hemligheten är att först skap en fråga.

Fråga: qryBookning
<code>
SELECT Guest.*, Booking.*
FROM Guest LEFT JOIN Booking ON Guest.IDGuest = Booking.IDGuest
</code>

Sedan inserta i den:
<code>
INSERT INTO qryBookning (FirstName, LastName, NrOfAdults, NrOfChildren, CheckInDate, CheckOutDate )
VALUES ('Nisse', 'Karlsson', 1, 0, #1/1/2001#, #1/7/2001#)
</code>

Tog bara några fält för att demonstrera principen.


Svara

Sv: Kombinerad SQL query

Postades av 2003-09-12 13:56:40 - Roger Gusthage

Jag tycker du förlorar lite möjligheter i framtiden om du bygger upp din logik, dvs ASP koden mm på att du skall kunna göra INSERT till en fråga. Då kan du endast använda MS Access och inte på ett enkelt sätt byta databas i framtiden. SQL server har sian Stored Procedure som inte stöds i många andra databaser. Gentemot SQL databaser är det mest generella att alltid köra rena SQL frågor direkt.

Du har dessutom planerat att ha EN rad per individ som är gäst, och dessutom har du tänkt ha EN rad per gäst i din booking tabell? Om du vänder på logiken så att varje gäst har en främmande nyckel som är ditt booking_nr så får du likt en order-orderrads logik.

Varje gäst tillhör en bokning, varje bokning kan ha X antal gäster. Många av dina fält i booking är också härledbara utifrån antal gäster etc. Se gärna över det för bästa prestanda och högsta normaliseringsgrad.

Roger


Svara

Sv: Kombinerad SQL query

Postades av 2003-09-12 14:06:56 - Andreas Hillqvist

Jag håller med dig vad det gäller att det inte är bra om man vill byta databas i framtiden. Vill bar demonstrera vad Access kan göra. Access är en rätt imponerade databasmotor vad det gäller funktionalitet.

Om varje bokning har en ny gäst borde informationen ligga i samma tabell.

Annars bör man förs söka upp gästen och dess ID nummer för att sedan skapa en bokning med dess GuestId.


Svara

Sv: Kombinerad SQL query

Postades av 2003-09-12 18:24:45 - Peter Björklund

Tack för era svar och kommentarer!

De två tabeller som jag beskriver är "slutstationen" i bokningen av en gäst/gäster.
Kraven att veta alla gästers namn till en bokning finns inte varför jag inte har normaliserat upp det ytterligare.

Tabellen booking kommer att hålla data om gjorda bokningar och skall inte påverkas av framtida förändringar i databasen såsom prisförändringar, rumsförändringar mm mm. Tabellen skall, förutom att "lagerhålla" data också användas att köra statistik på.

Övriga tabeller som håller "rådata" och som inte finns beskrivna här har högre normaliseringgrad för ökad prestanda osv.

Håller mitt resonemang?

För att återgå till grundfrågan... finns det någon smart kombinerad ren SQL fråga som utför det jag vill. Andreas... ditt förslag med Access låter ju bra men jag håller med om svårigheterna vid ett databasbyte.

Tack igen.

Peter


Svara

Sv: Kombinerad SQL query

Postades av 2003-09-13 14:24:58 - Roger Gusthage

Vill gärna utveckla mitt resonemang kring var guestID lagras. Det är avhängt tror jag om du behöver göra en INSERT eller två stycken.

Tänk er följande för en bokning.

Rum = 1, Antal vuxna = 2, Antal barn = 2 etc.

I tabellen bokning lagras då info om bokningen i sig, dvs rumsnummer, pris, incheckning etc. Det är samma uppgifter som gäller för alla gäster i rummet, oavsett om de är 1 eller fler personer. Skall du då lagra i tabellen bokning guestID så får du i detta fall 4 poster i databasen med exakt samma info per rad utöver olika guestID.

Vänder du på det som jag föreslår får du EN rad i tabell bokning och i tabell Guest får du fyra rader med för- och efternamn samt vilken bokning gästen tillhör.

Samma resonemang kan föras kring en faktura. En faktura innehåller X antal fakturarader. Det vore oklokt att skapa X antal rader i fakturatabellen där det enda som skiljer dem åt är produktnyummer och antal. Bättre är då att bryta ut till två tabeller med övergriåpande fakturainfo i faktura-tabellen, samt fakturarader med uppgift om produktnumemr och antal i en fakturaradstabell.

Bor gästen på samma ställe flera gånger skapas en ny rad med gästens uppgifter per bokning. (Kan givetvis bryta ut även detta i ny tabell med Personer ... )

Om du gör på detta sätt skapar du bokningen, samt knyter gäster till bokningen en och en. Görs detta i ASP sida så laddas sidan om varje gång ny gäst knytes till samma bokning och då anropar du INSERT SQL för varje gäst som läggs till. Eftersom det blir ett ökat anrop mot DB är iden dålig, men alternativet är att knyta det mot en Access-fråga som Anders föreslog, jag kan inte tänka mig någon annan lösning genom ett enda anrop till DB.

MS Access är ju bra på det sättet att den erbjuder lite specialfunktioner. Access är dessutom tillräckligt bra DB om det inte blir för många användare mot samam DB.


Svara

Sv: Kombinerad SQL query

Postades av 2003-09-14 01:20:21 - Peter Björklund

Roger,

>I tabellen bokning lagras då info om bokningen i sig, dvs rumsnummer, pris, >incheckning etc. Det är samma uppgifter som gäller för alla gäster i rummet, oavsett >om de är 1 eller fler personer. Skall du då lagra i tabellen bokning guestID så får du >i detta fall 4 poster i databasen med exakt samma info per rad utöver olika guestID.

Enligt din föreslagna bokning, precis som den kan inträffa i verkligheten, är det bara bokningsnamnet som lagras i db. Övriga gäster bokförs inte på någor sätt. Därför lagras inte heller deras namn på X antalet poster i db. Bokningsgästen lagras till db men antalet övriga gäster till en bokning blir endast en siffra till posten för själva bokningen.

Bokningsgästen bär ansvar för de övriga gästerna varför de inte behöver bokföras.

>Bor gästen på samma ställe flera gånger skapas en ny rad med gästens uppgifter >per bokning. (Kan givetvis bryta ut även detta i ny tabell med Personer ... )

Om återkommande gäst bokar ett rum kommer gästen att identifieras som återkommande gäst och därmed kommer endast en ny bokning med dess nya villkor att sparas i db (booking). Gästen återfinns då i Guest tabellen. Om inte gästen återfinns... ny gäst i Guest tabellen.

Jag kommer inte att köra detta mot en ASP sida men jag tycker också att Access duger bra så långt man kan bestämma antalet frågor som få till DB.

Återigen... finns det någon smart och kombinerad SQl fråga som kan kombinera INSERT/SELECT/INSERT?

Om inte så kör jag bara de olika frågorna i olika omgångar.

Tack!


Svara

Sv: Kombinerad SQL query

Postades av 2003-09-15 00:43:09 - Roger Gusthage

Jag fattade inte detta först =)

Har ingen input kring en kombinerad super-SQL sats men hoppas det löser sig.


Svara

Nyligen

  • 21:21 1xBet Promo Code 2025
  • 18:37 Remove the bumper in AUDI
  • 15:35 Chicken road crash game
  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 900
27 965
271 779
627
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies