webForumDet fria alternativet

SELECT från 3 tabeller

5 svar · 335 visningar · startad av dab

dabMedlem sedan apr. 2001109 inlägg
#1

Hej
Jag skulle behöva ha en query med 3 tabeller till ett forumindex (skriva ut forumkategorier).
Såhär skulle jag vilja ha det:
1. Hämta ut all info ifrån forumCat
2. Hämta ut user_id och user_username för varje row där forumCat.catModerator1 = users.user_id (och samma med catModerator2)
3. Hämta ut all info i forumNewcat för varje row där forumCat.catId = forumNewcat.newcatCat och där forumNewcat.newcatUser = $login->userId.

forumCat
---------
catId
catName
catDesc
catType
catModerator1
catModerator2

users
-----
user_id
user_username

forumNewcat
-----------
newcatId
newcatUser
newcatCat

Jättetacksam för svar...

/mvh dab

LarsGMedlem sedan dec. 200012 464 inlägg
#2
$q = "select catId, catName, catDesc, catType, 
       m1.user_username as moderator1 , m2.user_username as moderator2
  from forumNewcat join forumCat on newCatid = catId
  left join users m1 on catModerator1 = m1.user_id
  left join users m2 on catModerator2 = m2.user_id
 where newcatUser = " . $login->userId;

Du nämner inte vad newcatUser är för datatyp så du behöver eventuellt ändra där.

dabMedlem sedan apr. 2001109 inlägg
#3

Tack så mycket för svaret, jag inser nu att jag förklarat lite dåligt vad det är jag vill ha.
Denna kod:

	SELECT catId, catName, catDesc, catType, asfd, 
	m1.user_username as moderator1, m2.user_username as moderator2 
	FROM forumCat 
	left join users m1 on catModerator1 = m1.user_id 
	left join users m2 on catModerator2 = m2.user_id

Producerar detta resultat:

 
catId  catName    catDesc  catType  moderator1  moderator2  
2      Kategori1  Desc1    1        NULL        iffe 
3      Kategori2  Desc2    2        dab         Individen

Men nu vill jag även ha in en tabell till, gärna såhär:

 
catId  catName    catDesc  catType  moderator1  moderator2  newCategory

där newCategory är lika med 1 eller 0 beroende på om det finns en rad att jämföra med.
alltså:
WHERE catId = newCatCat AND newCatUser = $login->userId

Om where blir sann så ska newCategory innehålla 1 om inte 0.
Är detta möjligt att göra?

/mvh dab

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Jo

$q =
"select catId, catName, catDesc, catType, 
            m1.user_username as moderator1 , 
            m2.user_username as moderator2, 
            case when newcatid is null then 0 else 1 end
    from forumCat left join forumNewcat
      on newCatid = catId 
    and newcatUser = " . $login->userId .
 "  left join users m1 
      on catModerator1 = m1.user_id
     left join users m2 
      on catModerator2 = m2.user_id ";
dabMedlem sedan apr. 2001109 inlägg
#5

ahh, nu funkar det!!
tusen tack!!!

dabMedlem sedan apr. 2001109 inlägg
#6

nej det funkar inte alls förresten märkte jag nu =/
när det finns dubbletter så skrivs inte 1:an ut utan det blir en rad för varje dublett.
Här är koden:

SELECT catId, catName, catDesc, catType, catTopicCount, catPostCount,
m1.user_username AS moderator1,
m2.user_username AS moderator2,
CASE WHEN newcatId IS null THEN 0 ELSE 1 END AS newCat
FROM forumCat LEFT JOIN forumNewcat
ON newcatCat = catId AND newcatUser = '".$login->userId."'
LEFT JOIN users m1 ON catModerator1 = m1.user_id
LEFT JOIN users m2 ON catModerator2 = m2.user_id

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)