Avatar billede mortency Nybegynder
22. juni 2005 - 22:08 Der er 5 kommentarer og
1 løsning

Query fra flere tabeller

Jeg har 6 tabeller jeg skal søge fra som har forskjellige kolonne navn. Hvordan kan jeg søge i alle samtidig men er avhengig av å finne ut hvilken tabell hvilke treff kom fra?

Problemet er at alle tabellene skal linke til forskjellige sider og id og action er eks:
-index.asp?DocID=1
-index.asp?Action=NewsRead&NewsID=1
-index.asp?Action=UtstillingView&ID=13
-index.asp?Action=ProduktView&ID=136
-index.asp?Action=DesignView&ID=42
-index.asp?Action=ProdusentView&ID=12

Kan jeg legge alle treffene inn i en #QueryResult tabell hvor jeg lager en ekstra kolonne som heter Page og i asp scriptet så har jeg definert hva page er for noe?

If adoRs("Page") = 1 Then'Documents

Elseif adoRs("Page") = 2 Then'News

OSV......

Eller så må jeg bare lage en og en søge function som lister ut treffene etter hver tabell

//Morten
Avatar billede arne_v Ekspert
22. juni 2005 - 22:13 #1
(SELECT 'tabel_a',felt_a FROM tabel_a)
UNION ALL
(SELECT 'tabel_b',felt_b FROM tabel_b)
...
UNION ALL
(SELECT 'tabel_f',felt_f FROM tabel_f)

var måske et muligt approach
Avatar billede mortency Nybegynder
22. juni 2005 - 22:28 #2
Problemet er at i noen av tabellene skal jeg søge i 15 felter men i en annen kun 2 og da får jeg feilmelding med The text, ntext or image data type cannot be selected as distinct.

Dette løser heller at alle tabellene skal linke til forskjellige sider og id og action er eks:
-index.asp?DocID=1
-index.asp?Action=NewsRead&NewsID=1
-index.asp?Action=UtstillingView&ID=13
-index.asp?Action=ProduktView&ID=136
-index.asp?Action=DesignView&ID=42
-index.asp?Action=ProdusentView&ID=12

Noen gode ideer?

//Morten
Avatar billede mortency Nybegynder
22. juni 2005 - 22:32 #3
Hvordan kan få data fra 6 temp tabeller over i en temp tabell(#QueryResult)???

if(object_id('tempdb.dbo.#temp')<>1)
drop table #Documents

if(object_id('tempdb.dbo.#temp')<>1)
drop table #News

if(object_id('tempdb.dbo.#temp')<>1)
drop table #QueryResult

SELECT DocID, DocSub,DocMenuTitle,DocLink,DocTitle,DocContent,DocCreated, '1' as Page
INTO #Documents
FROM INDocuments
Where (DocMenuTitle LIKE '%a%' OR DocTitle LIKE '%a%' OR DocContent LIKE '%a%') AND (DocFKWPLanguageID=1 AND DocActive=1)

SELECT NewsID,NewsTittel,Ingress,'<NULL>' AS DocLink,'<NULL>' AS DocTitle,'<NULL>' as DocContent,Regdato, '2' as Page
INTO #News
FROM INNews
Where (NewsTittel LIKE '%a%' OR Ingress LIKE '%a%' OR BrodTekst LIKE '%a%') AND (NewsFKWPLanguageID=1)

SELECT * FROM #Documents
SELECT * FROM #News
--Hvordan kan jeg sette dette inn i tabellen #  #QueryResult
Avatar billede arne_v Ekspert
22. juni 2005 - 22:36 #4
så brug UNION fremfor UNION ALL

at der er forskelligt antal WHERE betingelser på betyder ikke noget bare der
selectes de samme felter
Avatar billede arne_v Ekspert
22. juni 2005 - 22:37 #5
jeg kan ikke se pointen i en temporær tabel

du selecter fra temporære tabeller ligesom du selecter fra 6 permanente tabeller: med UNION
Avatar billede arne_v Ekspert
24. juli 2005 - 15:50 #6
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester