webForumDet fria alternativet

SQL fråga, Ett urval ur två tabeller fungerar inte.

Databaser & SQL

2 svar · 669 visningar · startad av MrSQL

Medlem sedan feb. 20102 inlägg
Frågan#1

Hej, Det är tur att man är läskunning :-)

Här sitter jag och skriver på engelska.

Jag har en Access databas med två tabeller, den databasen är kopplad mot en webbsida
där jag gör en sökning, resultatet redovisas på en annan webbsida.

SELECT DISTINCT x.Nr, x.Till, x.Forb, x.Fabr, x.Typ, y.adress, y.mac, y.Anm
FROM tblRB AS x, tblMac AS y
WHERE (((y.adress) Like 'Grans*') AND y.mac IS NOT NULL);

Den här frågan fungerar nästan
Den ger bara för många poster i svaret, ca 64000 istället för 2000

Varför?

Till detta skulle jag vilja få till att jag kan använda mig av LIKE
men ingen vits ännu då frågan inte fungerar korrekt

Jag har två tabeller

tblRB
tblMac

I båda har jag gemensamt fält anm

jag vill med antingen en adress eller en anm eller något annat fält matcha
och samtidigt ta fram en macadress.

Detta svar kommer sedan kunna att generera en fil
den kommer sedan laddas upp på en ftp server

där den kommer hämtas automatiskt av en teknisk utrustning.

Så tanken är att man söker, får en matchning och klickar på en rad av resultaten
detta genererar den fil som kommer laddas upp.

Allt detta fungerar. Men inte sökningen i databasen.

10-100
10-10
10-1

Om jag skriver in 10-1
då vill jag få matchning på alla de ovan exemplen.

Om det finns en macadr på den specifika anm då vill jag se resultatet
samtidigt vill jag inte se den anm som inte har macadress.

Eller snarare de som matchas men inte har en macadress, skall då skrivas ut N/A på webbsidan.

Så ifall det blir en rad eller 30 rader vill jag se dem alla

Några ideer?

Mvh
David

Medlem sedan dec. 20025 483 inlägg
#2

Välkommen till wF!

Anledningen till att du får för många poster är att du inte kopplar samman tabellerna med ett villkor. Det som nu händer är att tabellerna cross joinas vilket innebär att alla möjliga radkombinationer skapas mellan tabellerna (och med "alla möjliga" så menar jag verkligen ALLA möjliga).

Så det du vill göra är följande:

SELECT
	x.Nr,
	x.Till,
	x.Forb,
	x.Fabr,
	x.Typ,
	y.adress,
	y.mac,
	y.Anm
FROM
	tblRB AS x INNER JOIN tblMac AS y
	ON
	x.anm = y.anm
WHERE
	y.adress Like 'Grans*' AND 
	y.mac IS NOT NULL
Medlem sedan feb. 20102 inlägg
#3

Peter S skrev:

Välkommen till wF!

Anledningen till att du får för många poster är att du inte kopplar samman tabellerna med ett villkor. Det som nu händer är att tabellerna cross joinas vilket innebär att alla möjliga radkombinationer skapas mellan tabellerna (och med "alla möjliga" så menar jag verkligen ALLA möjliga).

Så det du vill göra är följande:

SELECT
	x.Nr,
	x.Till,
	x.Forb,
	x.Fabr,
	x.Typ,
	y.adress,
	y.mac,
	y.Anm
FROM
	tblRB AS x INNER JOIN tblMac AS y
	ON
	x.anm = y.anm
WHERE
	y.adress Like 'Grans*' AND 
	y.mac IS NOT NULL

Jaha då förstår jag.
Det vilseleder ibland att man kan ha vissa fält i SELECT och koppla mot helt andra fält.

Tack för det snabba svaret.

Det fungerade klockrent.
Den blev snabb och svara, svarstiderna under 2 sek.

Härligt

Mvh
David

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)