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


XOR selecting i en och samma sats?

Postades av 2004-03-05 15:57:34 - Hobil Haidari, i forum databaser, Tråden har 7 Kommentarer och lästs av 959 personer

Hej,

Har ett trevligt problem, jag tror att det är ganska vanligt, varför chansen att någon redan har löst det är stor.

Säg att man har två tabeller TKontakt och TAdress, varje kontakt kan ha en eller flera adresser i TAdress tabellen. Ett vanligt scenario, eller hur. Varje adress post har ett id-fält som talar om vad det är för typ av adress, exvis 1=privat, 2=arbete.

Jag vill i en och samma SQL-sats hämta alla kontakter med privat adress om de har, har de ingen vill jag att arbetsadressen ska hämtas istället. Hur göres detta?

Ett alternativ som är omständigt och jobbigt är att först lista alla privata allena och sedan köra en UNION med arbetsadresserna, men det är inte tillräckligt tjusig lösning. Delvis pga att jag i min problemställning har en hel del variabler till att ta hänsyn till varför den blir mycket komplex lösning. Jag samkör det med en del andra tabeller, men det skulle göra problemet smått jobbigt här på forumet om jag skrev det i sin helhet.

Tacksam för svar.


Svara

Sv: XOR selecting i en och samma sats?

Postades av 2004-03-06 10:05:48 - Per Persson

Det kan vara lämpligt att berätta vilken db-motor du har (MS SQL? MySQL?)


Svara

Sv: XOR selecting i en och samma sats?

Postades av 2004-03-07 02:54:05 - Pelle Johansson

if (fältnamn && 2) then .. skall fungera


Svara

Sv: XOR selecting i en och samma sats?

Postades av 2004-03-08 09:17:28 - Hobil Haidari

Jag hade ju tänkt att det skulle lösas med SQL, varför sql motor inte har betydelse. Alltså ingen cursor och liknande, vill helst undvika allt sånt.

Pelle, jag förstod inte ditt svar. Alltså jag vill att satsen ska välja privat-adressen om kontakten har en sån, finns ingen sån, ska arbetsadressen väljas.
Och det ska göras i en SQL-sats, inte i en lagrad procedur. Är det möjligt?


Svara

Sv: XOR selecting i en och samma sats?

Postades av 2004-03-08 16:44:32 - Per Persson

Databasmotorn/-hanteraren kan ha betydelse eftersom syntax och stöd för olika saker tyvärr skiljer sig mellan olika databasmotorer.


Svara

Sv: XOR selecting i en och samma sats?

Postades av 2004-03-09 09:16:35 - Ulf Magnusson

Hej.

Här kommer en SQL som jag tror motsvarar vad du menar.
Jag är inte helt hundra på vad du menar när du säger "...ingen cursor..."
eftersom en cursor bara är ett "handtag" från ditt program till en SQL på
databassidan (ungefär).
Denna SQL påvisar dessutom att vilken typ av databas har betydelse.
Detta är en Oraclevariant:

select k.id, k.namn, nvl(a1.adress, a2.adress) adress
from tkontakt k, tadress a1, tadress a2
where k.id = a1.kontakt_id (+)
and a1.adress_typ (+) = 1
and k.id = a2.kontakt_id (+)
and a2.adress_typ (+) = 2

Tkontakt:
ID NAMN
1 Uffe
2 Kalle

Tadress:
KONTAKT_ID ADRESS_TYP ADRESS
1 1 hemgatan
1 2 jobbargatan
2 2 jobbsovargatan

Svar:
ID NAMN ADRESS
1 Uffe hemgatan
2 Kalle jobbsovargatan



Svara

Sv: XOR selecting i en och samma sats?

Postades av 2004-03-09 11:58:03 - Andreas Hillqvist

TKontakt:
KontaktId KontaktNamn
1 Uffe
2 Kalle

TAdress:
AdressId AdressKontakt AdressTyp Adress
1 1 1 hemgatan
2 1 2 jobbargatan
3 2 2 jobbsovargatan

SELECT TKontakt.*, (SELECT TOP 1 TAdress.Adress
FROM TAdress
WHERE TAdress.AdressKontakt = TKontakt.KontaktId
ORDER BY TAdress.AdressTyp)
FROM TKontakt


Svara

Sv: XOR selecting i en och samma sats?

Postades av 2004-03-09 12:33:50 - Hobil Haidari

Tackar och buggar för förslagen, de är till stor nytta, när jag ska skriva om en del processer.

Om man spekulerar mer i prestanda, är det någon som har åsikt om vad som lämpar sig bättre än det andra?

Att köra ren SQL eller bland in pekare och iterationer i satsen? Iterationer kräver ju det faktum att man radvis ser på värdet och eventuellt mellanlagrar informationen i en temporärtabell, vilket säger sig självt att det är en mycket krävande process. Att som Andreas föreslog där man hämtar info från en annan tabell för varje rad, hur mycket skiljer sig det från den förra, prestanda sett?


Svara

Nyligen

  • 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
  • 21:41 Automotive Services UK

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 978
27 965
271 783
572
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