/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Database kald til 2 tabeller...
Fra : Magnus


Dato : 25-01-05 16:24

Med disse to koder henter jeg en liste over tabellerne Kortnyt og Nyheder
uafhængigt af hinanen.

Kan jeg ikke slå dem sammen således at jeg kan få listet dem begge to i en
omgang således at posterne sorteret efter datoen i feltet dato i
Nyheder-tabellen og kndato i Kortnyt tabellen på samme måde som hvar det en
enkelt tabel?

/Magnus

SQL = "SELECT knid, hnhead, kndato FROM Kortnyt ORDER BY kndato DESC"
Set RS = conn.execute(SQL)
DO WHILE NOT RS.EOF
Response.write " & RS("knid") & " - " & RS("knhead") & "<br>
RS.MoveNext
LOOP

SQL = "SELECT id, overskrift, dato FROM Nyheder ORDER BY dato DESC"
Set RS = conn.execute(SQL)
DO WHILE NOT RS.EOF
Response.write " & RS("id") & " - " & RS("overskrift") & "<br>
RS.MoveNext
LOOP




 
 
Martin Christensen (25-01-2005)
Kommentar
Fra : Martin Christensen


Dato : 25-01-05 17:34

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"Magnus" <arnason@email.dk> writes:

> Med disse to koder henter jeg en liste over tabellerne Kortnyt og
> Nyheder uafhængigt af hinanen.
>
> Kan jeg ikke slå dem sammen således at jeg kan få listet dem begge
> to i en omgang således at posterne sorteret efter datoen i feltet
> dato i Nyheder-tabellen og kndato i Kortnyt tabellen på samme måde
> som hvar det en enkelt tabel?

Jeg ville nok selv lave et view, der samlede nyhederne. Hvis ikke du
ved, hvad et view er, så er en forespørgsel, der opfører sig som en
tabel (lidt forenklet sagt). Hvis jeg ellers forstår dit skema
korrekt, kan du gøre det således:

CREATE VIEW SamletNyt AS
SELECT knid, knhead, kndato FROM KortNyt
UNION
SELECT id, overskrift, dato FROM Nyheder

Denne opfører sig så som en tabel med ID'er, overskrifter og dato fra
de to tabeller. Denne kan du så smide dine forespørgsler efter som
normalt:

SELECT * FROM SamletNyt ORDER BY dato DESC

Jeg finder selv dette en ganske pæn og letforståelig løsning, men hvis
du har pænt mange rækker i dine nyhedstabeller, kunne performance
måske forbedres, men det er kun relevant i de færreste tilfælde.

Du må undskylde, hvis jeg undervurderer dit niveau.

Martin

- --
Homepage: http://www.cs.auc.dk/~factotum/
GPG public key: http://www.cs.auc.dk/~factotum/gpgkey.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAkH2dQ8ACgkQYu1fMmOQldX1wwCbBkQh+ah+9so6gaGuKAqm5U0f
SkcAn2oHAE9RAFemqxdWuTyj6kc7n1U0
=QnV6
-----END PGP SIGNATURE-----

Magnus (26-01-2005)
Kommentar
Fra : Magnus


Dato : 26-01-05 15:19

> CREATE VIEW SamletNyt AS
> SELECT knid, knhead, kndato FROM KortNyt
> UNION
> SELECT id, overskrift, dato FROM Nyheder
>
> Denne opfører sig så som en tabel med ID'er, overskrifter og dato fra
> de to tabeller. Denne kan du så smide dine forespørgsler efter som
> normalt:

Hvad hedder så felterne som for Nyheder-tabellen var id, overskrift og dato
eller for Kortnyt knid, knhead og kndato?

>
> SELECT * FROM SamletNyt ORDER BY dato DESC

Er der sådan?... Jeg får fejl på mine afvikling af SQL når jeg vil afvikle
nedenstående kode på min asp-side?
/Magnus

SQL="CREATE VIEW SamletNyt AS "
SQL=SQL+"[SELECT id, overskrift FROM Nyheder WHERE kategori<>'0' ORDER BY
dato DESC]"
SQL=SQL+" UNION ALL "
SQL=SQL+"[SELECT knid, knhead FROM Kortnyt WHERE kategori<>'0' ORDER BY dato
DESC]"

conn.execute(SQL)

SQL2="SELECT * FROM SamletNyt ORDER BY dato DESC"
Set RS = conn.execute(SQL2)

DO WHILE NOT RS.EOF
Response.write "" & RS("id") & " - " & RS("overskrift") & "<br>"
RS.MoveNext
LOOP



Kaj Julius (30-01-2005)
Kommentar
Fra : Kaj Julius


Dato : 30-01-05 03:30


"> Er der sådan?... Jeg får fejl på mine afvikling af SQL når jeg vil
afvikle
> nedenstående kode på min asp-side?
> /Magnus
>
> SQL="CREATE VIEW SamletNyt AS "
> SQL=SQL+"[SELECT id, overskrift FROM Nyheder WHERE kategori<>'0' ORDER BY
> dato DESC]"
> SQL=SQL+" UNION ALL "
> SQL=SQL+"[SELECT knid, knhead FROM Kortnyt WHERE kategori<>'0' ORDER BY
> dato DESC]"
>
> conn.execute(SQL)
>

Nu er der selvfølgelig forskel på implementeringen af VIEWs på de
forskellige databaser, men f.eks. vil en DB2 database ikke acceptere en
ORDER BY på en view. Sortering skal foretages i den forespørgsel som henter
data fra viewen.

Hvorfor har du de squarebrackets med? De ser helt forkerte ud...

Desuden (her er jeg dog ikke på helt sikker grund) mener jeg, at man skal
omslutte SELECT med paranteser:

SQL = "CREATE VIEW SamletNyt AS (" & _
"SELECT id, overskrift FROM Nyheder WHERE kategori<>'0'" & _
"UNION ALL" & _
"SELECT knid AS id, knhead AS overskrift FROM Kortnyt WHERE kategori<>'0')"

/Kaj



Magnus (30-01-2005)
Kommentar
Fra : Magnus


Dato : 30-01-05 10:37

> Nu er der selvfølgelig forskel på implementeringen af VIEWs på de
> forskellige databaser, men f.eks. vil en DB2 database ikke acceptere en
> ORDER BY på en view. Sortering skal foretages i den forespørgsel som
> henter data fra viewen.
>
> Hvorfor har du de squarebrackets med? De ser helt forkerte ud...

Det var en fejl...

> Desuden (her er jeg dog ikke på helt sikker grund) mener jeg, at man skal
> omslutte SELECT med paranteser:
>
Det har jeg gjort her:
SQL="CREATE VIEW SamletNyt AS "
SQL=SQL+"(SELECT id, overskrift, dato, kategori FROM Nyheder"
SQL=SQL+" UNION ALL "
SQL=SQL+"SELECT knid AS id, knhead AS overskrift, kndato AS dato, knkategori
AS kategori FROM Kortnyt)"
conn.execute(SQL)

SQL2="SELECT id, overskrift, dato, kategori FROM SamletNyt ORDER BY dato
DESC"
Set RS = conn.execute(SQL2)
DO WHILE NOT RS.EOF
Response.write "" & RS("id") & " - " & RS("dato") & " - " &
RS("overskrift") & "<br>"
RS.MoveNext
LOOP

Men jeg får meddelse om der er en fejl ved VIEW:
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'
[TCX][MyODBC]You have an error in your SQL syntax near 'VIEW SamletNyt AS
(SELECT id, overskrift, dato, kategori FROM Nyheder UNION ALL ' at line 1

/temp.asp, line 16



/Magnus



Mads Lie Jensen (30-01-2005)
Kommentar
Fra : Mads Lie Jensen


Dato : 30-01-05 11:15

On Sun, 30 Jan 2005 10:37:08 +0100, "Magnus" <arnason@email.dk> wrote:

>[TCX][MyODBC]You have an error in your SQL syntax near 'VIEW SamletNyt AS

Aha, du bruger mySQL - den har ikke views før i version 5.0.1


--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
Gartneriet - snart i ny indpakning: http://ny.gartneriet.dk

Magnus (30-01-2005)
Kommentar
Fra : Magnus


Dato : 30-01-05 14:17

>>[TCX][MyODBC]You have an error in your SQL syntax near 'VIEW SamletNyt AS
>
> Aha, du bruger mySQL - den har ikke views før i version 5.0.1

Så var det ikke mig der var helt håbløs...

Findes der et alternativ jeg kører åbenbart MySQL 3.23.58?


/Magnus



Mads Lie Jensen (30-01-2005)
Kommentar
Fra : Mads Lie Jensen


Dato : 30-01-05 15:01

On Sun, 30 Jan 2005 14:16:38 +0100, "Magnus" <arnason@email.dk> wrote:

>>>[TCX][MyODBC]You have an error in your SQL syntax near 'VIEW SamletNyt AS
>>
>> Aha, du bruger mySQL - den har ikke views før i version 5.0.1
>
>Så var det ikke mig der var helt håbløs...
>
>Findes der et alternativ jeg kører åbenbart MySQL 3.23.58?

Ikke jeg ved af - men siden det kun er en mysql 3.23, så er der heller
ingen UNION i den - det er først med fra version 4.0


--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
Gartneriet - snart i ny indpakning: http://ny.gartneriet.dk

Martin Christensen (26-01-2005)
Kommentar
Fra : Martin Christensen


Dato : 26-01-05 17:19

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"Magnus" <arnason@email.dk> writes:

>> CREATE VIEW SamletNyt AS
>> SELECT knid, knhead, kndato FROM KortNyt
>> UNION
>> SELECT id, overskrift, dato FROM Nyheder
>>
>> Denne opfører sig så som en tabel med ID'er, overskrifter og dato
>> fra de to tabeller. Denne kan du så smide dine forespørgsler efter
>> som normalt:
>
> Hvad hedder så felterne som for Nyheder-tabellen var id, overskrift
> og dato eller for Kortnyt knid, knhead og kndato?

Min fejl. Jeg skulle nok have afprøvet det først. Der mangler nok
en AS her og der, for at det bliver rigtigt pænt.

CREATE VIEW SamletNyt AS
SELECT knid AS id, knhead AS overskrift, kndato AS dato FROM KortNyt
UNION
SELECT id AS id, overskrift AS overskrift, dato AS dato FROM Nyheder

Nu findes der jo også manualer, man kan slå den slags op i...

Martin

- --
Homepage: http://www.cs.auc.dk/~factotum/
GPG public key: http://www.cs.auc.dk/~factotum/gpgkey.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAkH3wvsACgkQYu1fMmOQldXTbwCeOff2zq/t09Tbeq1kz67R1OGl
wQUAnRBzITOPzp6CgrUBdXoGvWJmFd0F
=eOA9
-----END PGP SIGNATURE-----

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste