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-fråga

Postades av 2006-05-05 09:01:43 - Mattias Johansson, i forum sql-server/msde, Tråden har 13 Kommentarer och lästs av 782 personer

Två tabeller; den första innerhåller artiklar (i exemplet visat som bokstäver), den andra innehåller underartiklar (i exemplet visat som siffror). Tabellerna är joinade genom att varje underartikel håller reda på sin artikel. Nedan ser vi relationerna hos tre artiklar. Artikel A innehåller alltså underartiklar 1, 2 och 3, artikel B innehåller 2 och 3, och C innehåller 1 och 3.

A-1
A-2
A-3

B-2
B-3

C-1
C-3

Nu vill jag hämta de artiklar som INTE innehåller underartikel 1 (alltså ska bara B hämtas). Hur ser SQL-frågan ut då?


Svara

Sv: SQL-fråga

Postades av 2006-05-05 09:22:50 - Håkan Borneland

Hej!

Ett förslag:

SELECT a.artikelnamn, b.artikelnummer FROM artiklar a
INNER JOIN underartiklar b ON b.id = a.id AND b.artikelnummer <> 1


//Håkan


Svara

Sv:SQL-fråga

Postades av 2006-05-05 10:12:42 - Mattias Johansson

Tack Håkan. Så enkelt var det alltså. Missade att villkoret skulle in i JOIN istället för i WHERE.


Svara

Sv: SQL-fråga

Postades av 2006-05-05 11:56:36 - Håkan Borneland

Det hade gått utmärkt att lägga villkoret <b>(AND b.artikelnummer <> 1)</b> i WHERE-satsen också.
En ren smaksak.

//Håkan


Svara

Sv:SQL-fråga

Postades av 2006-05-05 12:45:14 - Mattias Johansson

Hmm... vid närmare eftersyn visar det sig att det inte var rätt svar ändå. Nu blir resultatet:

A-2
A-3
B-2
B-3
C-3

Det enda som plockas bort är posterna med 1. Alltså hämtas även artiklarna A och C fast de innehåller underartikel 1. Vad jag vill ha är bara resultatet:

B


Svara

Sv: SQL-fråga

Postades av 2006-05-05 13:31:29 - Håkan Borneland

Jahhhaaaa...
Vi gör ett nytt fösök.
<code>SELECT CASE b.artikelnummer WHEN 1 THEN a.artikelnamn
ELSE a.artikelnamn + '-' + b.artikelnummer END FROM artiklar a
INNER JOIN underartiklar b ON b.id = a.id</code>
Om artikelnummer är t.ex. en int får du göra en CAST

//Håkan


Svara

Sv: SQL-fråga

Postades av 2006-05-05 13:37:23 - Thomas Vanhaniemi

Trolien inte det bästa och effektivaste/snyggaste sättet att göra det på men detta borde fungera.
<code>
SELECT a.artikelnamn, b.artikelnummer FROM artiklar a
INNER JOIN underartiklar b ON b.id = a.id
WHERE a.artikelnamn NOT IN
(SELECT a.artikelnamn FROM artiklar a
INNER JOIN underartiklar b ON b.id = a.id
WHERE b.artikelnummer = 1)
</code>


Svara

Sv:SQL-fråga

Postades av 2006-05-05 13:44:56 - Håkan Borneland

Njjaaa Thomas.
Du har nog bara gjort en variant av mitt tidigare svar.
EDIT: kan ha läst fort och fel, strunt a i detta i såfall.
//Håkan


Svara

Sv: SQL-fråga

Postades av 2006-05-05 13:50:05 - Thomas Vanhaniemi

Nja Håkan, min variant skall ta alla artiklar där artikeln inte har en underartikel med artikelnummer 1. Om du tittar på vad som efterfrågas är det så att alla artiklar som har en underartikel med artikelnummer 1 INTE skall tas med. Din variant lämnar bort alla rader där underartikelns artikelnummr är 1 men lämnar kvar alla artiklar. Han vill ha ut artikel B från A B och C eftersom A har underartiklarna 1, 2 och 3, B har inte ett och C har 1 och 3.


Svara

Sv: SQL-fråga

Postades av 2006-05-05 13:50:31 - Lars Berg

<code>
SELECT a.artikelnamn, b.artikelnummer
FROM artiklar a inner join underartiklar b
ON b.id = a.id
WHERE NOT exists
(SELECT *
from underartiklar ua
where ua.id = a.id
and ua.artikelnummer = 1)
</code>


Svara

Sv:SQL-fråga

Postades av 2006-05-05 13:57:26 - Håkan Borneland

Jag fattade frågan fel först, och gav ett nytt förslag.
I ditt förslag så får han ju inte med artikelnamnet när artikelnumret är 1.
Vilket visade sig senare vara det han ville.

//Håkan


Svara

Sv:SQL-fråga

Postades av 2006-05-05 13:58:01 - Håkan Borneland

EDIT: Idag läser jag visst bara fort och fel... :-(
Jag har helt missat frågeställningen, och givit svar på något helt annat.
Mats och Thomas kan bortse från allt som jag skrivit i tråden, bara att ta hâlja istället.
PS: Håller med Lars Berg <b>EXISTS</b> ger bättre prestanda än att använda <b>IN</b> DS.

//Håkan


Svara

Sv: SQL-fråga

Postades av 2006-05-08 08:37:28 - Mattias Johansson

Jo, nu fungerade det bättre. Jag tackar så mycket för hjälpen!


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

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 569 619
27 953
271 709
570
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