/ 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
Ang Select kommando til flere tables i én ~
Fra : Kenny


Dato : 11-05-06 20:50

Hej,

Jeg er ret ny indenfor MySQL og vil lige høre om det kan lade sig gøre
at man i samme query kan kalde flere tables i min database.

Målet er at blande tilfældige rækker fra de forskellige tables.

Jeg håber at der er nogen der vil bære over med min uviden indenfor
området:)

Tak.

Mvh

Kenneth Felber

 
 
Henrik Stidsen (11-05-2006)
Kommentar
Fra : Henrik Stidsen


Dato : 11-05-06 21:03

on 11-05-2006, Kenny supposed :
> Jeg er ret ny indenfor MySQL og vil lige høre om det kan lade sig gøre at man
> i samme query kan kalde flere tables i min database.
> Målet er at blande tilfældige rækker fra de forskellige tables.

Select * from tabel1, tabel2, tabel3 osv

Hvis kollonenavne mellem to tabeller er identiske skal du referere til
dem med tabelnavnet foran f.eks. tabel1.felt2.

--
Henrik Stidsen - http://henrikstidsen.dk/
"Age is something that doesn't matter, unless you are a cheese."
- Luis Bunuel



Kenny (11-05-2006)
Kommentar
Fra : Kenny


Dato : 11-05-06 21:10

Henrik Stidsen skrev:
> on 11-05-2006, Kenny supposed :
>> Jeg er ret ny indenfor MySQL og vil lige høre om det kan lade sig gøre
>> at man i samme query kan kalde flere tables i min database.
>> Målet er at blande tilfældige rækker fra de forskellige tables.
>
> Select * from tabel1, tabel2, tabel3 osv
>
> Hvis kollonenavne mellem to tabeller er identiske skal du referere til
> dem med tabelnavnet foran f.eks. tabel1.felt2.
>


Ok. tilfældet er netop at kolonne navnene er identiske i tabellerne. men
nu har jeg prøvet følgende:

SELECT tabel1.felt2, tabel1.felt3, tabel2.felt2, tabel2.felt2 FROM
tabel1, tabel2 ORDER BY Rand() LIMIT 5.


men jeg får kun random rækker fra tabel2......

Henrik Stidsen (11-05-2006)
Kommentar
Fra : Henrik Stidsen


Dato : 11-05-06 21:35

Kenny expressed precisely :
> SELECT tabel1.felt2, tabel1.felt3, tabel2.felt2, tabel2.felt2 FROM tabel1,
> tabel2 ORDER BY Rand() LIMIT 5.

> men jeg får kun random rækker fra tabel2......

Den select du har ovenfor laver EN række ud der dækker begge tabeller.
Du skal altså have noget at koble dem sammen med, ellers får du det der
hedder spøgelsestubler - alle mulige kombinationer mellem rækkerne i
tabel1 og tabl2.

Måske det er union du skal kigge på ?

( Select * FROM tabel1 ORDER BY RAND() LIMIT 5 )
UNION
( Select * FROM tabel2 ORDER BY RAND() LIMIT 5 )

--
Henrik Stidsen - http://henrikstidsen.dk/
"Age is something that doesn't matter, unless you are a cheese."
- Luis Bunuel



Jens Gyldenkærne Cla~ (11-05-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 11-05-06 22:14

Kenny skrev:

> Ok. tilfældet er netop at kolonne navnene er identiske i
> tabellerne.

Du kan bruge "... AS nytnavn" til at tildele nye navne til
felterne:

SELECT tabel1.felt1 AS f1a, tabel2.felt1 AS f1b, ...


> SELECT tabel1.felt2, tabel1.felt3, tabel2.felt2, tabel2.felt2
> FROM tabel1, tabel2 ORDER BY Rand() LIMIT 5.

Hvilken udgave af mysql kører du (og på hvilket styresystem) - og
hvor store er dine tabeller.

Jeg har lige prøvet på MySQL 4.1 under linux samt på MySQL 5 under
Windows. I begge tilfælde virker det fint med den opbygning du har
skitseret (men jeg har dog kun testet med mindre tabeller).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Kenny (12-05-2006)
Kommentar
Fra : Kenny


Dato : 12-05-06 06:16

Jens Gyldenkærne Clausen skrev:
> Kenny skrev:
>
>> Ok. tilfældet er netop at kolonne navnene er identiske i
>> tabellerne.
>
> Du kan bruge "... AS nytnavn" til at tildele nye navne til
> felterne:
>
> SELECT tabel1.felt1 AS f1a, tabel2.felt1 AS f1b, ...
>
>
>> SELECT tabel1.felt2, tabel1.felt3, tabel2.felt2, tabel2.felt2
>> FROM tabel1, tabel2 ORDER BY Rand() LIMIT 5.
>
> Hvilken udgave af mysql kører du (og på hvilket styresystem) - og
> hvor store er dine tabeller.
>

Min udgave er Mysql 4.0.24 på unix. OG tabellerne er meget små lige pt.
under 20 kb....

> Jeg har lige prøvet på MySQL 4.1 under linux samt på MySQL 5 under
> Windows. I begge tilfælde virker det fint med den opbygning du har
> skitseret (men jeg har dog kun testet med mindre tabeller).

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408191
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste