23. maj 2005 - 11:38Der er
18 kommentarer og 1 løsning
Hvilken tabel kommer data fra
Jeg har en oversigt hvor data kommer fra 2 forskellige tabeller.
Den ene tabel indeholder nyheder mens den anden indeholder nyhedsbreve.
Jeg skal dog i denne oversigt illustrere hvilken tabel dataen kommer fra. Hvordan kan jeg i min kode finde ud af om dataen kommer fra tabel1 eller tabel2.
du har vel to forskelle sql sætninger mm? sql1 = "select * from tabel1" sql2 = "select * from tabel2" set rs1 = conn.execute(sql1) set rs2 = conn.execute(sql2) response.write "dette er fra tabel1 "&rs1("ditfelt") response.write "dette er fra tabel2 "&rs2("ditfelt")
nej jeg har forsøgt at køre den ind i en Inner Join, hvilket jeg også tror fungere som det skal. Problemet er bare at kolonnen hvor overskriften på henholdsvis nyhederne og nyhedsbrevene ikke hedder det samme derfor vil jeg gerne vide hvilken tabel dataen hentes ud fra.
hvordan ser din sql ud? Den eneste måde du kan gøre det på så må være at rette kolonne navnene så du kan se hvad der er fra hvilken tabel. Når du først har hivet data ud i et resultset så har du jo så at sige en ny resultat tabel. Men den indeholder ikke indformation om hvor data stammer fra. Det eneste som identificerer data i resultsettet er kolonne navnene
Hvorfor bruger du inner join? Hvis den ene tabel indeholder nyhedsbreve og den anden indeholder nyheder er der vel ikke noget naturligt id at joine dem omkring?!
Er der ikke snarere tale om at du ønsker at kombinere indholdet af de to tabeller til en samlet tabel? Det lyder mere som en union for mig:
Hvis dette er rigtigt så kunne du opnå den ønskede effekt på denne måde:
SQL = "(SELECT Titel, Tekst, 'tabel1' AS KildeTabel FROM tabel1) UNION (SELECT Titel, Tekst, 'tabel2' AS KildeTabel FROM tabel2)"
Ok. hvis min tabeller hedder nyheder og nyhedsbrev men de felter som skal hentes ud ikke hedder det samme hvordan skal jeg så gøre. Når det f.eks. er nyhedsberevet der skal skrives så ligger "overskriften" i en kolonne der hedder emne og når det er fra nyhederne så hedder tabellen, overskrift.
så kan du jo bare tjekke om der står noget i feltet For hvis der står noget i emne står der vel ikke noget i overskriften og vice versa -- if rs("emne") = "" then response.write "her er intet emne så dette kommer fra 'nyhederne'" &rs("overskrift") else response.write "her er der et emne så dette kommer fra 'nyhedsbrevet'" &rs("emne") end if
24/05-2005 09:31:36> Du skal bruge AS til at lave et alias i dette tilfælde:
SELECT Emne AS Overskrift, Tekst, 'FraNyhedsbrev' AS KildeTabel FROM Nyhedsbrev
24/05-2005 09:47:54> Det bliver et rent gæt, men prøv med:
SQL = "SELECT * FROM (SELECT ID, Titel, Tekst, 'tabel1' AS KildeTabel FROM tabel1) UNION (SELECT ID, Titel, Tekst, 'tabel2' AS KildeTabel FROM tabel2) ORDER BY ID"
busschou> Den dur vist desværre ikke. For at UNION overhovedet skal fungere, skal de to subselects - så vidt jeg ved - give samme type output. Derunder også samme søjlenavne. Hvis søjlerne hedder noget forskelligt kan man heldigvis bruge AS til "omdøbe" dem.
Eksperten.dk har jo faktisk heller ikke udsendt en eneste email i over 3 uger, så jeg forstår sagtens at det kan være svært at holde sig opdateret. :^|
Synes godt om
Ny brugerNybegynder
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.