Avatar billede cronick Nybegynder
10. september 2006 - 12:08 Der er 22 kommentarer og
1 løsning

Order by "celle i anden tabel"

Hey!

Hvis jeg nu vil lave følgende query:

mysql_query("SELECT celle FROM tabel ORDER BY (celle fra tabel2)");

Hvordan vil det skulle se ud?
Avatar billede nielle Nybegynder
10. september 2006 - 12:13 #1
Hvad er sammenhængen mellem tabel og tabel2?
Avatar billede Slettet bruger
10. september 2006 - 12:13 #2
SELECT tabel.celle FROM tabel, tabel2 WHERE tabel.celle = tabe2.andencelle ORDER by tabel2.celle
Avatar billede cronick Nybegynder
10. september 2006 - 12:16 #3
Sammenhængen er, i den ene bliver der udskrevet nogle navne i en tabel, og den skal så yderligere sortere det i forhold til deres "seneste click", i en anden tabel.. Sådan ligesom, sidst online..
Avatar billede cronick Nybegynder
10. september 2006 - 12:25 #4
Jeg har nu prøvet med denne:

$get_friends = mysql_query("SELECT ven, dato, FROM tabel1 WHERE brugernavn = '$navn', sidsteclick FROM tabel2 WHERE brugernavn = 'ven' ORDER by settime DESC")or die(mysql_error());

- Det virker dog ikke ..
Avatar billede nielle Nybegynder
10. september 2006 - 12:32 #5
Prøv lige at beskrive dine to tabeller og hvad forholdet er imellem dem.
Avatar billede cronick Nybegynder
10. september 2006 - 12:40 #6
tabel1 = tabel med ens venner man har
tabel2 = selve tabellen hvor brugeren er oprettet, og deri er også en celle, som siger hvornår man sidst har bevæget sig på siden..

Så vil jeg gerne have at den skal udskrive alle de venner man har (kun hvor brugernavnet er det man er inde på), og det skal sorteres i, hvornår vennes sidst har bevæget sig på siden (tallet er bare i time()).
Avatar billede nielle Nybegynder
10. september 2006 - 12:44 #7
Hvad hedder felterne i de to tabeller?
Avatar billede cronick Nybegynder
10. september 2006 - 12:54 #8
tabel1 = ven
tabel2 = brugernavn, settime

mener ikke der skal bruges mere end dét..
Avatar billede nielle Nybegynder
10. september 2006 - 13:11 #9
Muligvis noget i denne stil:

SELECT tabel1.*
FROM tabel1 Left JOIN
(
    SELECT brugernavn, max(settime) AS senesteSettime
    FROM tabel2
    GROUP BY tabel2
) AS tabel2special
ON tabel1.ven = tabel2special.brugernavn
ORDER BY tabel2special.senesteSettime DESC
Avatar billede nielle Nybegynder
10. september 2006 - 13:11 #10
Sådan:

SELECT tabel1.*
FROM tabel1 Left JOIN
(
    SELECT brugernavn, max(settime) AS senesteSettime
    FROM tabel2
    GROUP BY brugernavn
) AS tabel2special
ON tabel1.ven = tabel2special.brugernavn
ORDER BY tabel2special.senesteSettime DESC
Avatar billede cronick Nybegynder
10. september 2006 - 13:19 #11
Utroligt, jeg fik det til at virke, selvom jeg stort set ikke forstår ret meget af det.. Men tak skal du have! Læg venligst et svar.. (:
Avatar billede cronick Nybegynder
10. september 2006 - 13:30 #12
Tror jeg - Hvor skal det dette sættes ind i den; WHERE brugernavn = '$navn'

- det er til tabel2

Jeg har lavet den således: mysql_query("SELECT tabel1.* FROM tabel1 Left JOIN(SELECT brugernavn, max(settime) AS senesteSettime FROM tabel2 GROUP BY brugernavn) AS brugere ON tabel1.ven = brugere.brugernavn ORDER BY brugere.senesteSettime DESC")or die(mysql_error());
Avatar billede nielle Nybegynder
10. september 2006 - 13:47 #13
Ikke helt forstået ...

Hvis brugernavn = '$navn' skal ind et eller andet sted i din kode, er der jo kun en række tilbage. Men hvad er det så der skal sorteres?
Avatar billede cronick Nybegynder
10. september 2006 - 13:57 #14
Nej .. Den finder det fra alle i tabel1 .. Den skal kun finde det, hvor brugernavn = '$navn' .. :)
Avatar billede nielle Nybegynder
10. september 2006 - 14:17 #15
Jamen, så er der jo ikke noget tilbage at sortere? Og din overskrift gik jo netop på noget med at sortere.

Det er i hvert fald ret trivielt at sortere 1 række. ;^)
Avatar billede cronick Nybegynder
10. september 2006 - 14:27 #16
Okey, det er vel forståeligt at du ikke helt forstår hvad jeg mener, har også selv lidt svært ved at forklare det.. Men prøver nu alligevel:

- Jeg har en masse rækker i tabel1, hvor alle venner på siden står.
- Så har jeg en tabel2 hvor brugerne er oprettet..
- Jeg vil udskrive alle vennerne som er tilknyttet til DEN bruger man er inde på ($navn).
- Men ikke KUN udskrive såsom: SELECT ven, settime FROM tabel1 WHERE brugernavn = '$navn' - Den skal nemlig sortere det efter hvem der har det højeste tal, settime, fra tabel2..

Håber du forstår nu.. :)
Avatar billede nielle Nybegynder
10. september 2006 - 14:49 #17
Et settime et felt i tabel1 eller tabel2? I din lille sådan-skal-det-ikke-være SELECT er den i tabel1, men den er i tabel2 i din beskrivelse fra 10/09-2006 12:54:18.
Avatar billede cronick Nybegynder
10. september 2006 - 14:56 #18
Tabel2..
Avatar billede nielle Nybegynder
10. september 2006 - 15:46 #19
Har tabel1 iukke også et felt som hedder noget i stil med brugernavn? Det vør der være hvis den skal fortælle hvem der er ven med hvem.
Avatar billede cronick Nybegynder
10. september 2006 - 15:53 #20
Det er vidst mig (også) der kludrer i det nu.. Begge tabeller har en celle ved navn "brugernavn".. Jeg prøvede lige at lege lidt med det jeg ville have fat i, og jeg fandt selv ud af det sidste, så ingen problemer nu.. (:

- Bare læg et svar..
Avatar billede cronick Nybegynder
10. september 2006 - 15:54 #21
Og, nårh ja, det jeg mente var: mysql_query("SELECT tabel1.* FROM tabel1 Left JOIN(SELECT brugernavn, max(settime) AS senesteSettime FROM tabel2 GROUP BY brugernavn) AS brugere ON tabel1.ven = brugere.brugernavn WHERE tabel1.brugernavn = '$navn' ORDER BY brugere.senesteSettime DESC")or die(mysql_error());
Avatar billede nielle Nybegynder
10. september 2006 - 16:03 #22
Ja, nu synes jeg at det begynder at hænge sammen :^)

mysql_query("
SELECT tabel1.* FROM tabel1 LEFT JOIN
(
    SELECT brugernavn, max(settime) AS senesteSettime
    FROM tabel2
    GROUP BY brugernavn
) AS brugere ON tabel1.ven = brugere.brugernavn
WHERE tabel1.brugernavn = '$navn'
ORDER BY brugere.senesteSettime DESC
") or die(mysql_error());

... og et svar:


Forresten er dette ikke så meget et PHP spørgsmål. Egentligt burde det nok have været postet under Database-kategorien.
Avatar billede cronick Nybegynder
10. september 2006 - 16:28 #23
Okey.. Men tak for hjælpen.. :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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