Avatar billede xfox Nybegynder
27. juni 2006 - 09:21 Der er 27 kommentarer og
1 løsning

Order by fra 2 tabeller

Jeg har 2 tabeller med vidt forskellige data. De 2 tabeller hænger ikke sammen på nogen måde, men de har hver et felt der hedder opretdato. Jeg vil gerne finde de 2 sidst oprettede poster. Altså ikke de 2 sidste fra hver. Hvis de 2 sidste poster ligger i tabel1 skal den tage dem, men hvis de 2 sidste ligger spredt over tabel1 og tabel 2, skal den tage en fra hver. Er det til at forstå?
Avatar billede xfox Nybegynder
27. juni 2006 - 09:26 #1
Mit bud var:

SELECT galleri1.id AS id1, galleri2.id AS id2 FROM galleri1, galleri2 ORDER BY galleri1.opretdato, galleri2.opretdato DESC LIMIT 2

Men det syntes jeg ikke helt virker.
Avatar billede arne_v Ekspert
27. juni 2006 - 13:19 #2
prøv:

(SELECT * FROM tabel_1)
UNION
(SELECT * FROM tabel_2)
ORDER BY opretdato LIMIT 2
Avatar billede xfox Nybegynder
29. juni 2006 - 08:40 #3
Det lader ikke til at virke desværre.
Avatar billede arne_v Ekspert
29. juni 2006 - 14:06 #4
hvilken version af MySQL ?
Avatar billede xfox Nybegynder
29. juni 2006 - 16:56 #5
version 4.0. et eller andet.
Avatar billede arne_v Ekspert
30. juni 2006 - 00:27 #6
så burde den understøtte UNION

hvilken fejl får du ?
Avatar billede xfox Nybegynder
03. juli 2006 - 14:56 #7
Jeg syntes ikke helt der kommer en fejl, der kommer bare ikke nogle poster.
Avatar billede xfox Nybegynder
03. juli 2006 - 14:58 #8
Du har ret, her er fejlen: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /customers/bmwworld.dk/bmwworld.dk/httpd.www/index_2.php on line 69
Avatar billede arne_v Ekspert
04. juli 2006 - 01:10 #9
må vi se et lille kode snippet ?
Avatar billede xfox Nybegynder
04. juli 2006 - 07:51 #10
$connection = mysql_connect("localhost","bmwworld_dk","password");
$db=("bmwworld_dk");
$sql=("(Select * from galleri) UNION (Select * from galleri_pics) ORDER BY opret_dato DESC LIMIT 2");
    while($row=mysql_fetch_array($result))
    {
                            $userid = $row["brugerid"];
                            $bilid = $row["bilid"];
                            $model = $row["model"];
                            $picid = $row["picid"];
                            $overskrift = $row["overskrift"];
                       
}
Avatar billede xfox Nybegynder
04. juli 2006 - 07:53 #11
Har også prøvet uden () omkring SELECT sætningerne, men med samme resultat.
Avatar billede arne_v Ekspert
04. juli 2006 - 22:29 #12
mangler der ikke en

$result = mysql_query($sql);

??
Avatar billede hmortensen Nybegynder
04. juli 2006 - 22:34 #13
Og mysql_select_db("bmwworld_dk");
Avatar billede arne_v Ekspert
04. juli 2006 - 22:37 #14
mysql_select_db($db);

vel, men ja
Avatar billede hmortensen Nybegynder
04. juli 2006 - 22:41 #15
Var ment som en udskiftning af linie, da der ikke laves noget tjek på variablen.
Avatar billede xfox Nybegynder
05. juli 2006 - 08:19 #16
Sorry, det var mig der var kommet til at klippe den ud af koden. Den ser selvfølgelig sådan her ud:
$connection = mysql_connect("localhost","bmwworld_dk","bmwpower05");
$db=("bmwworld_dk");
$sql=("Select * from galleri UNION Select * from galleri_pics ORDER BY opret_dato DESC LIMIT 2");
$result = mysql_db_query($db,$sql,$connection);
while($row=mysql_fetch_array($result))
{
echo "<script> alert('Den henter data')</script>";
$bilid = $row["bilid"];
}
Avatar billede arne_v Ekspert
06. juli 2006 - 02:09 #17
$result = mysql_db_query($db,$sql,$connection) or die(mysql_error());
Avatar billede arne_v Ekspert
06. juli 2006 - 02:09 #18
så får du nok at vide hvad problemet er
Avatar billede xfox Nybegynder
06. juli 2006 - 07:56 #19
Det er jo genialt! Jeg får denne fejlmeddelelse:"The used SELECT statements have a different number of columns".
De er heller ikke ens de 2 tabeller jeg bruger, troede ikke det var et krav. Det eneste de har tilfælles er "opretdato", som den skal søge ud fra. Er det ikke muligt?
Avatar billede hmortensen Nybegynder
06. juli 2006 - 09:03 #20
Så skal du hente fællesnævnerne.
Avatar billede xfox Nybegynder
06. juli 2006 - 09:06 #21
Kan du uddybe dit svar, hvad er det jeg skal ændre ved min sqlsætning?
Avatar billede arne_v Ekspert
06. juli 2006 - 13:46 #22
erstat de to stjerner med en komma separeret liste med felt navne - og der skal være
det samme antal i begge
Avatar billede xfox Nybegynder
06. juli 2006 - 14:45 #23
Det hjalp lidt, nu kommer en anden fejl: "Unknown column 'opret_dato' in 'order clause'"
Avatar billede xfox Nybegynder
06. juli 2006 - 14:46 #24
der findes dog en opret_dato i hver tabel.
Avatar billede arne_v Ekspert
06. juli 2006 - 14:58 #25
er feltet ogsaa med i de to select lister ?
Avatar billede xfox Nybegynder
08. juli 2006 - 11:04 #26
Tak det hjalp, men nu kan den ikke finde ud af at holde styr på tabeldataene. Det er de rigtige data der kommer ud, men det er svært at bestemme hvilken tabel de kommer fra.
Avatar billede xfox Nybegynder
08. juli 2006 - 11:40 #27
Jeg fandt lidt hjælp her: http://www.eksperten.dk/spm/629370, så nu virker det hele.
Tusinde tak for hjælpen alle sammen. Læg et svar hvis i vil have point. God weekend.
Avatar billede arne_v Ekspert
08. juli 2006 - 17:41 #28
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