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


SQL, data från två tabeller, join?

Postades av 2003-07-06 11:03:16 - Pontus Kjellberg, i forum asp - allmänt, Tråden har 8 Kommentarer och lästs av 1377 personer

Hej!
Jag önskar att från två tabeller i en MySQL databas hämta information och sedan visa
hur vad varje person har för kostnad samt hur mycket samma person betalt in.
Presenteras sedan ungefär så här.

Namn Kostnad Inbetalt Saldo
Arne 725 500 -225
Bertil 800 0 -800
Cesar 0 2400 2400
Pontus 1550 2000 445
---------------------------------------------
TOTALT 3075 4900 1825

Att göra detta om informationen finns i samma tabell går bra men får inte till det
då det i detta fall är två olika tabeller?

Nedan SQL-satser fungerar bra var för sig, men hur får jag ihop dom?
Kanske använda "JOIN" på något sätt..?

sql="select id, namn, sum(tachkostnad) AS summatachkostnad from flyglogg group by namn"
set rs = adoconn.Execute(sql)

sql="select id, namn, sum(inbetalt) AS summainbetalt from inbetalt group by namn"
set rs = adoconn.Execute(sql)

TABELL 1
Namn=Flyglogg
Fält=id, namn, tachkostnad

TABELL 2
Namn=Inbetalt
Fält=id, namn, inbetalt

Vänligen
Pontus


Svara

Sv: SQL, data från två tabeller, join?

Postades av 2003-07-06 17:54:17 - Raderat konto

Prova att be den ha samma id i tabell 1 och i tabell 2.
Men i tabell 2 har den Id (Unikt) och Idd som är id för tabell 1 id.
hoppas du hänger med hur jag menar.


Svara

Sv: SQL, data från två tabeller, join?

Postades av 2003-07-07 13:45:11 - Carl Johan Gribel

Hur är tabellerna kopplade rent logiskt, via 'namn'? Strängar är inte så bra som identifierare.
Finns det flera 'Flyglogg' och 'Inbetalt' per 'namn'?

Bättre kanske att ha en tabell 'person', och sedan två tabeller 'Flyglogg' och 'Inbetalt' som innehåller Idn för vilken person de gäller.

I så fall får du göra en, i korthet, RIGHT OUTER JOIN mellan 'person' och 'Flyglogg' resp 'Inbetalt'. Då returneras alla data från de båda tabellerna som gäller din 'person'

Lycka till, bara suttit med SQL några veckor så ursäkta om jag gör fel själv =)


Svara

Sv: SQL, data från två tabeller, join?

Postades av 2003-07-07 22:16:29 - Pontus Kjellberg

Hej!

Jag har en tabell där personuppgifter finns. Varje person har där ett unik id.
Detta id finns även i de övriga två tabellerna och gäller just en person.

Ja, det finns flera inbetalningar resp utgifter (flyglogg) per person.

Pontus


Svara

Sv: SQL, data från två tabeller, join?

Postades av 2003-07-08 13:59:20 - Carl Johan Gribel

Hej igen,

förstår dig ungefär så här:

Tabell 'person'
Fält: ID,namn

Tabell: 'inbetalning'
Fält: ID,personID,antalKr

Tabell: 'kostnad'
Fält: ID,personID,antalkr

I så fall hade jag gjort något i den här stilen:

SELECT
person.namn,SUM(inbetalning.antalKr),SUM(kostnad.antalKr)
FROM
person
RIGHT OUTER JOIN
inbetalning ON person.ID=inbetalning.personID
RIGHT OUTER JOIN
kostnad ON inbetalning.personID=kostnad.personID

...som länkar person>inbetalning>kostnad.
(Kanske det egentligen borde vara person>inbetalning.person>kostnad ?)
Finns säkert flera metoder, inget pro som sagt.
Lycka till!


Svara

Sv: SQL, data från två tabeller, join?

Postades av 2003-07-08 15:01:29 - Pontus Kjellberg

Jag ska se om jag får det att fungera.
Tack så länge!

Pontus


Svara

Sv: SQL, data från två tabeller, join?

Postades av 2003-07-10 21:05:55 - Pontus Kjellberg

Hej igen!

Nja, nu har jag testat en hel del men får inte det att fungera riktigt ändå.
Det fungerar bra om man bara använder sig av två tabeller, anvandare och
flyglogg eller anvandare och inbetalt.
När det blir alla tre så blir det inte fullt så bra, alltså anvandare, flyglogg och inbetalt.

Någon som har något annat tips eller variant på SQL-fråga?

Pontus


Svara

Sv: SQL, data från två tabeller, join?

Postades av 2003-07-10 23:55:27 - Pelle Johansson

Jag ser inte vad flygloggen skall innehålla för information men vi säger att det är total flygtid. I så fall skulle jag göra enligt följande:

Tabell users

userid
firstname
lastname

Tabell payment

userid
totalpaid

Tabell flightlog

userid
hours
flighttime

I tabellen flightlog skriver man ner antalet timmar som användaren flyger varje tillfälle och på så sätt så blir det flera poster som finns för samma userid. I tabellen flightcost ligger endast en post och den säger exempelvis att 1 timma flyg kostar 150 kr.

Som du ser nu så är det inte mindre än 3 tabeller som måste joinas och därmed så måste du även ta hänsyn till detta i ditt script. Vi säger att kostnaden för varje flytimme är 150 kr som vi då kan hårdkoda i vår sql-sats för detta exempel i alla fall.

select
firstname + ' ' + lastname as name
, totalhours = (select sum(flighthours) from flightlog where userid = u.userid)
, payment = (select sum(totalpaid) from payment where userid = u.userid)
from users u
order by 1

name totalhours payment
Erik Larsson 17 500
Jens Karlsson 3 1800

Skall du ha med ytterligare någon tabell som är kopplat till en användare, säg att vi har ett adressregister och vill få fram telefonnummer, då blir joinen:

tabell userinfo

userid
address
phone
city

select
firstname + ' ' + lastname as name
, city
, phone
, totalhours = (select sum(flighthours) from flightlog where userid = u.userid)
, payment = (select sum(totalpaid) from payment where userid = u.userid)
from users u, userinfo ui
where u.userid = ui.userid
order by 1


Svara

Sv: SQL, data från två tabeller, join?

Postades av 2003-07-11 11:38:19 - Pontus Kjellberg

Hej SeeJay, Pelle och ni andra!

Nästan, men inte riktigt...

För att förtydliga lite:
---------
I tabell ANVANDARE finns bla fälten
id (som är unikt för varje person)
fornamn
efternamn
---------
I tabell FLYGLOGG finns bla fälten
id (som alltså identifierar/följer användaren)
namn (innehåller för och efternamn, behövs nog inte användas här)
tachkostnad (ett belopp som kan vara olika för olika poster)
(i tabellen förekommer ett antal poster med flera olika personer,
alltså id, men också ett antal poster med samma person (id))
---------
I tabell INBETALT finns bla fälten
id (som alltså identifierar/följer användaren)
namn (innehåller för och efternamn, behövs nog inte användas här)
inbetalt (ett inbetalt belopp som kan vara olika för olika poster)
(i tabellen förekommer ett antal poster med flera olika personer,
alltså id, men också ett antal poster med samma person (id))
---------

Vad jag vill göra:
1, Kontrollera vilka användare som finns i tabellen ANVANDARE
2, Finns det några poster i tabell FLYGLOGG så summera dessa
för den aktuella användaren (id) och ta med resultatet.
3, Finns det några poster i tabell INBETALT så summera dessa
för den aktuella användaren (id) och ta med resultatet.
4, Gå till nästa post i tabell ANVANDARE och gör samma koll tills
"end of file"
5, Presentera NAMN, KOSTNAD, INBETALT, SALDO på något "snyggt" sätt.

Nedan sql-sats tycker jag borde fungera och bygger på Pelles exempel.
Har testat den och andra olika varianter men det blir "error in your SQL syntax".
Även SeeJays exempel i tidigare inlägg verkar bra, men jag fick "inte till det".

SELECT
fornamn,sumtachkostnad=(SUM(tachkostnad) from flyglogg where id=anvandare.id),
suminbetalt=(SUM(inbetalt) from inbetalt where id=anvandare.id)
from anvandare order by fornamn


Pontus


Svara

Nyligen

  • 14:07 Games
  • 17:54 Vegastars New Zealand
  • 16:56 Verde Casino Danmark
  • 13:54 Vegastars: Top Australian Online C
  • 21:28 Chicken Road Casino Game
  • 21:21 1xBet Promo Code 2025
  • 18:37 Remove the bumper in AUDI
  • 15:35 Chicken road crash game

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 982
27 965
271 784
680
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