Avatar billede Kurtbeep Nybegynder
11. marts 2012 - 22:01 Der er 5 kommentarer og
1 løsning

INNER JOINS

Hej allesammen

jeg er lidt ny i php verdenen og vil lære lidt php og er nået til INNER JOINS

jeg har nogle exp på dem her:


SELECT C.category_id, count(C.category_id) as k FROM `#__jshopping_categories` as C
                  inner join  `#__jshopping_categories` as SC on C.category_id=SC.category_parent_id
                  group by C.category_id"


--------------

SELECT usergroup.usergroup_discount FROM `#__jshopping_usergroups` AS usergroup
                  INNER JOIN `#__jshopping_users` AS users ON users.usergroup_id = usergroup.usergroup_id
                  WHERE users.user_id = '


Nogle som evt kunne forklar mig hvordan og hvorledes den virker og hvad de betyder 

så som "C.category_id" hvor står der "C."

tak for hjælpen :p og ja er igang med at lærer
Avatar billede arne_v Ekspert
11. marts 2012 - 22:20 #1
`#__jshopping_categories` as C

goer at C er et alias for #__jshopping_categories

C.category_id

betyder derfor

#__jshopping_categories.category_id

altsaa

category_id feltet i #__jshopping_categories tabellen
Avatar billede Kurtbeep Nybegynder
11. marts 2012 - 22:36 #2
Tak for et hurtig svar arne_v :)
kunne du evt skær det lidt mere ud i pap for mig?
INNER JOINS noget helt nyt for mig :/

hvis du skulle forklar i ord disse sættinger hvor vil du?

1:
---
SELECT C.category_id, count(C.category_id) as k FROM `#__jshopping_categories` as C
                  inner join  `#__jshopping_categories` as SC on C.category_id=SC.category_parent_id
                  group by C.category_id"
----

2:
---
SELECT usergroup.usergroup_discount FROM `#__jshopping_usergroups` AS usergroup
                  INNER JOIN `#__jshopping_users` AS users ON users.usergroup_id = usergroup.usergroup_id
                  WHERE users.user_id = '
----

tak :)
Avatar billede arne_v Ekspert
11. marts 2012 - 22:53 #3
den syntax har ikke ret meget med INNER JOIN at goere

hvis du har en query:

SELECT a,b,c FROM mintabel WHERE d=123

kan du skrive den som:

SELECT mintabel.a,mintabel.b,mintabel.c FROM mintabel WHERE mintabel.d=123

eller som:

SELECT mt.a,mt.b,mt.c FROM mintabel AS mt  WHERE mt.d=123
12. marts 2012 - 10:36 #4
Jeg er selv igang med at lære og står tæt på dit udviklingstrin, så lad os dele lidt erfaringer.  Jeg tror dit spørgsmål handler om to ting, for det første det at joine tabeller, for det andet brug af aliaser, så som C, når man joiner tabellerne.  Arne_v har forklaret brugen af aliaser.  Hvis det drejer sig om begyndelsesgrundlaget i det at trække data fra flere tabeller ved at joine dem, så er her noget teori jeg stadig har frisk i erindring:

Lad os sige du har en tabel med kategorier således

kategorier
kat navn
1  køretøjer
2  redskaber

og en tabel med varer

varer
id navn kat
1  cykel 1
2  skovl 2
3  spade 2

Så vil du lave en udskrift over alle varer med kategorinavnene.  De oplysninger står i to tabeller, så dem må du kombinere, JOINe

Denne forespørgsel, SELECT * FROM varer JOIN kategorier, giver dig alle kombinationer af de to tabeller, altså

1 cykel 1 1 køretøjer
1 cykel 1 2 redskaber
2 skovl 2 1 køretøjer
2 skovl 2 2 redskaber
3 spade 2 1 køretøjer
3 spade 2 2 redskaber

Men det er for meget - du vil kun have de rækker hvor vare-kat er lig med kategori-kat.  Så du udvider din forespørgsel således

SELECT * FROM varer JOIN kategorier ON varer.kat = kategorier.kat

Så får du kun det følgende:

1 cykel 1 1 køretøjer
2 skovl 2 2 redskaber
3 spade 2 2 redskaber

Det var bedre, men der står stadig for meget unødigt i hver række.  Du har kun brug for varenavnet og kategorinavnet. 

SELECT varer.navn, kategorier.navn FROM varer JOIN kategorier ON varer.kat = kategorier.kat

som giver dig dette:

cykel køretøjer
skovl redskaber
spade redskaber

Og så kommer vi til aliaserne, øgenavnene, som allerede forklaret. For at gøre forespørgslen kortere og mere oversigtelig kan du give tabellerne øgenavne, varer = v og kategorier = k, således:

SELECT v.navn, k.navn FROM varer v JOIN kategorier k ON v.kat = k.kat

Og så tilføje, at i mysql betyder JOIN det samme som INNER JOIN.  (Der er andre slags joins, dem kommer du nok til i næste kapitel af teoribogen.)

Det specielle ved den kode du viser i spørgsmålet er, at du joiner en tabel med sig selv.  Du har åbenbart kategorier og underkategorier såsom:

categori
categori_id navn parent_id
1                redskaber    0
2                køretøjer    0
3                haveredskaber 1
4                køkkenredskaber 1

For at kunne joine to forskellige versioner af tabellen med hinanden giver du tabellen to forskellige øgenavne, SELECT ...... FROM #__jshopping_categories as C inner join #__jshopping_categories as SC....

Jeg håber det må være til hjælp (eller var forklaringen så lang at du i mellemtiden glemte hvad problemet var?)
17. marts 2012 - 21:08 #5
Kurtbeep, fik du mit indlæg #4?  Var det til hjælp?  Kom ind og fortæl.

Jeg opretter dette som svar, idet jeg håber jeg har været til hjælp.  Du vil sikkert bede om svar fra andre indlæggere også (eller i stedet for.)
Avatar billede Kurtbeep Nybegynder
20. marts 2012 - 17:53 #6
jeg har brugt de samme ex og prøvet mig frem tak for hjælpen :)
har fået en bedre viden om INNER JOINS
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



Seneste spørgsmål Seneste aktivitet
I dag 10:28 PDFEngine Af barth i Andet software
I går 22:40 Butte indhold i celler Af lurup i Excel
I går 15:24 Power Query Af djsimonsen i Excel
I går 14:43 Hvis ikke på liste, tilføj værdier til liste Af TheLibrarian i Excel
I går 11:33 Windows 11 Af ranni i Windows