Avatar billede bigtime Nybegynder
28. januar 2012 - 15:08 Der er 9 kommentarer og
1 løsning

hvad er INNER JOIN

er der en nemmere måde at gøre det her på ?
    $sql = mysql_query("select sider.*,info0.antal,info0.sideID from info0 INNER JOIN sider on info0.sideID=sider.id where info0.dato = '$dato' AND sider.erotik = '$ja' order by hits ASC limit 0,20");

og hvad betyder INNER JOIN
Avatar billede claes57 Ekspert
28. januar 2012 - 15:13 #1
inner join er, når du har to tabeller (info0 & sider) med et felt med samme data (sider.id), og du skal bruge data fra en eller begge tabeller på et opslag via en nøgle i den anden (where info0.dato = '$dato'...)
Avatar billede bigtime Nybegynder
28. januar 2012 - 15:34 #2
aaa okay tak så blev jeg lidt klogere og gjorde min nogen ting lidt lettere :D
men hvordan kan det være jeg ikke kan få den til at order by hits desc
den smider dem bare ud som de stå i dben.

$dato = date("Y-m-d");
    $sql = mysql_query("select sider.*,info0.antal,info0.sideID from info0 INNER JOIN sider on info0.sideID=sider.id where info0.dato = '$dato' AND sider.erotik = '$ja' order by hits desc limit 0,20");
    $i = '1';
    while($row = mysql_fetch_array($sql)){
$antal = $row['antal'];
Avatar billede claes57 Ekspert
28. januar 2012 - 15:43 #3
den skal lige vide, hvor hits ligger (fx info0.hits eller sider.hits)
28. januar 2012 - 15:47 #4
Med al respect, claes57, egenlig svarer du generelt på hvad JOIN er hvor spørgsmålet gik specifikt på INNER JOIN.  bigtime, jeg tilføjer det følgende:

Når man joiner to tabeller med INNER JOIN får man de rækker hvor der er værdier i begge tabeller.

Hvis man derimod bruger OUTER LEFT JOIN får man alle rækker fra den første tabel med værdier også fra den anden tabel hvis de findes.  Ved OUTER RIGHT JOIN får man alle rækker fra den anden tabel plus værdier fra den første tabel hvor de findes.

Antag du har disse to tabeller med de indfyldte værdier:

info
sideID antal
3        25
5        123
7        55

sider
id    hits
3    45
4    55
5    65

Så vil disse tre forespørgsler give disse resultater:

SELECT * FROM sider INNER JOIN info ON sider.id = info.sideID

id hits sideID antal
3  45    3    25
5  65    5    123

SELECT * FROM sider OUTER LEFT JOIN info ON sider.id = info.sideID

id hits sideID antal
3  45    3    25
4  55    NULL  NULL
5  65    5    123

SELECT * FROM sider OUTER RIGHT JOIN info ON sider.id = info.sideID
id hits sideID antal
3  45    3    25
5  65    5    123
NULL NULL 7    55

Så spørger du, om der er en nemmere måde at gøre det på.  Det kan gøres en anelse nemmere ved at i mysql kun behøver at skrive JOIN når man vil have INNER JOIN og kun behøver at skrive LEFT JOIN eller RIGHT JOIN hvor man vil have en af de outer joins.
Avatar billede bigtime Nybegynder
28. januar 2012 - 16:02 #5
det rigtig.
kom med et svar claes57
Avatar billede claes57 Ekspert
28. januar 2012 - 16:05 #6
ok
Avatar billede bigtime Nybegynder
28. januar 2012 - 16:24 #7
så er spørgsmålet oprette her http://www.eksperten.dk/spm/956257

men Christian_Belgien
din løsning ser interessant ud kunne godt tænke mig at læse lidt om den kender du en god side ?
Avatar billede olebole Juniormester
28. januar 2012 - 16:47 #8
<ole>

- men husk i dit DB-administrationsprogram at oprette en foreign key, så de berørte kolonner indekseres 'på tværs' af tabellerne. Ellers kan det blive en svært ineffektiv fremgangsmåde  *o)

/mvh
</bole>
28. januar 2012 - 17:42 #9
bigtime, eftersom du holder dig til indlægget fra et andet medlem foreslår jeg, at du søger yderligere oplysninger, såsom en god side, fra det samme medlem.
Avatar billede olebole Juniormester
28. januar 2012 - 18:11 #10
@bigtime: Referencen er altid et godt sted at hente viden. Det kan synes tørt at kaste sig ud i, men at vænne sig til at læse referencer, kan virkelig betale sig i længden. En væsentlig fordel ved mysql.com og php.net er, at udviklere debatterer og udveksler erfaringer under gennemgangen af hvert emne.

En side, jeg ved, mange har haft glæde af, er mysqljoin.com. Den forklarer forskellene mellem de forskellige versioner af join kort og tydeligt, men jeg vil nok ikke foreslå at nøjes med den.

Der er oceaner af muligheder i MySQL, som forbløffende mange udviklere ikke kender til. De skarpe udviklere har brugt masser af timer på at surfe rundt i de forskellige sprogs referencer. Når man først er blevet vandt til det, er det faktisk sjovere, end man umiddelbart skulle tro.

Det kan være en stor fordel, når man pludselig går kold i en eller anden problemstilling. Pludselig kommer man i tanker om noget, man har læst et sted i referencen. Så kommer al læseriet een til gode, når man kan forholdsvis let kan finde stedet og kan få problemet løst på en elegant og hurtig måde.
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