webForumDet fria alternativet

Paranteser i SQL-fråga

3 svar · 400 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej,
Jag använde Access, för att göra en urvalsfråga mot en databas via ODBC...

När jag sedan visade den i SQL-läge, ser den ut så här:

SELECT Artikel.Artikelnr, 
	Artikel.Benämning AS Benämning 1
	ArtikelText.[Text 1] AS Benämning 2, 
	Artikel.Enhet, 
	Artikel.Artikeltyp, 
	Artikel.[Tillv/köp-kod], 
	Artikel.[Kortnr statnr], 
	Artikel.[Antal per enhet (förp)], 
	Artikel.[Försäljn pris], 
	Artikel.[Leverantörens best nr], 
	Artikel.Lagersaldo, 
	Artikel.[Kod artikelkat] INTO [Artikelreg till UppdragNU]
FROM Artikel
	INNER JOIN ArtikelText 
		ON Artikel.Artikelnr = ArtikelText.Artikelnr
WHERE (((Artikel.Artikeltyp) Is Null) AND ((Artikel.[Kod artikelkat])="21")) 
	OR (((Artikel.Artikeltyp) Is Null) AND ((Artikel.[Kod artikelkat])="22")) 
	OR (((Artikel.Artikeltyp) Is Null) AND ((Artikel.[Kod artikelkat])="28")) 
	OR (((Artikel.Artikeltyp) Is Null) AND ((Artikel.[Kod artikelkat])="47")) 
	OR (((Artikel.Artikeltyp) Is Null) AND ((Artikel.[Kod artikelkat])="68")) 
	OR (((Artikel.Artikeltyp) Is Null) AND ((Artikel.[Kod artikelkat])="87")) 
	OR (((Artikel.Artikeltyp) Is Null) AND ((Artikel.[Kod artikelkat])="90"));

Vilka parenteser kan jag ta bort... ??

Känns väldigt invecklad, samtidigt som jag blir osäker på vad jag kan ta bort...

Det är ingen vanlig MSSQL-databas jag kopplar mot, så jag vet inte om IN ( ) Fungerar...

Varför kontrolleras detta:

(Artikel.Artikeltyp) Is Null

På alla rader?

Mvh
Henrik

devotionMedlem sedan jan. 20013 582 inlägg
#2

Rensade lite, och detta måste väl vara samma som ovan?

SELECT Artikel.Artikelnr, 
	Artikel.Benämning AS Benämning 1
	ArtikelText.[Text 1] AS Benämning 2, 
	Artikel.Enhet, 
	Artikel.Artikeltyp, 
	Artikel.[Tillv/köp-kod], 
	Artikel.[Kortnr statnr], 
	Artikel.[Antal per enhet (förp)], 
	Artikel.[Försäljn pris], 
	Artikel.[Leverantörens best nr], 
	Artikel.Lagersaldo, 
	Artikel.[Kod artikelkat] INTO [Artikelreg till UppdragNU]
FROM Artikel
	INNER JOIN ArtikelText 
		ON Artikel.Artikelnr = ArtikelText.Artikelnr
WHERE (Artikel.Artikeltyp Is Null AND Artikel.[Kod artikelkat]="21") 
	OR (Artikel.Artikeltyp Is Null AND Artikel.[Kod artikelkat]="22") 
	OR (Artikel.Artikeltyp Is Null AND Artikel.[Kod artikelkat]="28") 
	OR (Artikel.Artikeltyp Is Null AND Artikel.[Kod artikelkat]="47") 
	OR (Artikel.Artikeltyp Is Null AND Artikel.[Kod artikelkat]="68") 
	OR (Artikel.Artikeltyp Is Null AND Artikel.[Kod artikelkat]="87") 
	OR (Artikel.Artikeltyp Is Null AND Artikel.[Kod artikelkat]="90");

Mvh
Henrik
:)

devotionMedlem sedan jan. 20013 582 inlägg
#3

Pillade lite till:

SELECT Artikel.Artikelnr, 
	Artikel.Benämning AS Benämning 1
	ArtikelText.[Text 1] AS Benämning 2, 
	Artikel.Enhet, 
	Artikel.Artikeltyp, 
	Artikel.[Tillv/köp-kod], 
	Artikel.[Kortnr statnr], 
	Artikel.[Antal per enhet (förp)], 
	Artikel.[Försäljn pris], 
	Artikel.[Leverantörens best nr], 
	Artikel.Lagersaldo, 
	Artikel.[Kod artikelkat] INTO [Artikelreg till UppdragNU]
FROM Artikel
	INNER JOIN ArtikelText 
		ON Artikel.Artikelnr = ArtikelText.Artikelnr
WHERE Artikel.Artikeltyp Is Null 
	AND 
		(
			Artikel.[Kod artikelkat]="21"
			OR Artikel.[Kod artikelkat]="22"
			OR Artikel.[Kod artikelkat]="28"
			OR Artikel.[Kod artikelkat]="47"
			OR Artikel.[Kod artikelkat]="68"
			OR Artikel.[Kod artikelkat]="87"
			OR Artikel.[Kod artikelkat]="90"
		)

Är detta samma?

Mvh
Henrik

:)

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Fortfarande samma vad jag kan se. Den första rensningen var triviala saker. Tvåan var också korrekt som du tänker på vad som får frågan att bli sann, alltså att både ett av artikelkategorierna stämmer överens, och att artikeltypen är null. Koden ser nog ut så för att maskingenererad kod inte är till för att läsas av människor. :)

122 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
119 ms — hämta tråd, inlägg och bilagor (db)