Toon posts:

HELP: MySql outer joins

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een vraagje over een outer join en kom er zelf niet uit.
Ik zal het even proberen uit te leggen:

Ik heb 2 tabellen:

tdf_tastes
code:
1
2
3
4
5
6
7
8
9
10
11
+----------------+----------+-----------+
| taste_id              | taste_cat| taste_desc| 
+----------------+----------+-----------+
| 1                     | 1             | honden   |
| 2                     | 1             | katten   |
| 3                     | 2             | action   |
| 4                     | 3             | classic  |
| 5                     | 3             | trance   | 
| 6                     | 3             | pop      |
| 7                     | 3             | hardcore |
+----------------+----------+-----------+

tdf_user_taste
code:
1
2
3
4
5
6
7
8
9
+--------------------+----------+
| uniek_id      | user_id | taste_id |
+--------------------+----------+
| 1             |  1        | 1            |
| 2             |  2        | 2    |
| 3             |  1        | 3    | 
| 4             |  1        | 4    |
| 5             |  2        | 5    | 
+--------------------+----------+

Even voor de duidelijkheid:
tdf_tastes is dus meer dan 100 records groot, maar dat ga ik hier niet typen.
taste_cat staat voor categorie, zoals muziek films huisdieren etc.

In user_taste staan dus de smaken die een gebruiker heeft ingevoerd
user 1 heeft in dit geval, honden als huisdier,
action films als favoriete films en klassieke muziek als muziek smaak.

Wat ik nu wil, is een lijst uitspuigen met alle smaken en daarbij aangegeven of een gebruiker die smaak heet geselecteerd like this:

query where user_id=1

honden | checked
katten |
action | checked
classic | checked
trance |
pop |
hardcore |


Nu is mijn vraag, hoe krijg ik doormiddel van een query wel alle tastes met eventueel de geselecteerde smaak van een gebruiker.

Ik had dit:
PHP:
1
2
3
4
5
6
<?
$sql = "
SELECT Tastes.*, User.user_id, User.taste_id AS user_taste
FROM tdf_user_taste User
RIGHT OUTER JOIN tdf_tastes Tastes USING (taste_id) WHERE User.user_id=$id";
?>

Maar nu krijg ik alleen alle geselecteerde smaken te zien, als ik de tabellen bij de join omwissel etc krijg ik precies hetzelfde en ik loop me nu een beetje blind te staren dus zou het erg tof vinden als jullie me kunnen helpen!!!?

Alvast hartelijk dank!

Verwijderd

Topicstarter
iemand? :Z :?

Verwijderd

Topicstarter
Nou... toch wil ik deze topic weer ff actief maken.... ik ben er nog steeds niet uit terwijl er heus wel iemand is die me kan helpen denk ik!

Het probleem is dus, als ik een outer join doe zonder where user_id=$id dan krijg ik dus wel netjes de lookup table gejoined op de tastes table, maar als ik dus wel where user_id=$id gebruik krijg ik alleen het aantal records dat in de lookup table staat.............................

En dat is niet echt de bedoeling...

Is er dan echt niemand die me kan helpen?
Zo weinig komt dit toch niet voor?

Nouja LET ME KNOW
Alvast bedankt :+

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-09 17:11

GraasGast

Analogue Heaven

ff snel vraagje, wat is het verschil tussen een inner en een outer join? :?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16:30

Janoz

Moderator Devschuur®

!litemod

* Janoz waagt een gok:
[code]SELECT
t.taste_desc as smaak
COUNT(ut.uniek_id) as gekozen
FROM
tdf_user_taste as ut
tdf_tastes as t
WHERE
ut.user_id=**$id** AND
t.taste_id=ut.tast_id
GROUP BY
t.tast_id
ORDER BY
t.tast_id[/code]
Deze is trouwens NIET getest.. Het ID is dat ie een lijst terug geeft smaak (beschrijving van smaak) en gekozen (0 of 1)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-09 17:11

GraasGast

Analogue Heaven

1 dingetje, MySQL ondersteund toch geen right joins? dat zie ik dus wel staan in de eerste post hiero...

Verwijderd

Topicstarter
Op vrijdag 23 februari 2001 18:47 schreef GraasGast het volgende:
1 dingetje, MySQL ondersteund toch geen right joins? dat zie ik dus wel staan in de eerste post hiero...
Jawel, hij geeft in iedergeval geen fout en doet eigenlijk precies hetzelfde als een left join alleen is het dan een kwestie van de tabellen omdraaien :)

Met die query in het begin heb ik ook ff lopen knutselen dus die is al een aantal malen weer door elkaar gegooid.

Full join wordt niet door mysql ondersteunt is mijn ervaring.

Ik zal even de hier boven geposte query proberen....

In iedergeval bedankt dat er eindelijk wat reactie is :) thanks

Verwijderd

Topicstarter
1 dingetje, MySQL ondersteund toch geen right joins? dat zie ik dus wel staan in de eerste post hiero...
Innerjoin heeft betrekking op gerelateerde rijen, outer join heeft dat niet.
Op vrijdag 23 februari 2001 18:46 schreef Janoz het volgende:
* Janoz waagt een gok:
[code]SELECT
t.taste_desc as smaak
COUNT(ut.uniek_id) as gekozen
FROM
tdf_user_taste as ut
tdf_tastes as t
WHERE
ut.user_id=**$id** AND
t.taste_id=ut.tast_id
GROUP BY
t.tast_id
ORDER BY
t.tast_id[/code]
Deze is trouwens NIET getest.. Het ID is dat ie een lijst terug geeft smaak (beschrijving van smaak) en gekozen (0 of 1)
Dit werkt niet helemaal zoals ik wil.... zal ff verder testen ermee. Iemand meer ideeen?

  • Juup
  • Registratie: Februari 2000
  • Niet online
Probeer het eens met een LEFT JOIN
code:
1
select * from table1 left join table2 on table1.id = table2.id

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

volgens mij komt deze aardig in de buurt:
code:
1
2
3
4
5
6
7
8
select 
 t.taste_desc
,if(isnull(ut.user_id),0,1) as checked 
from 
tdf_tastes t 
left outer join 
tdf_user_taste ut 
on (t.taste_id=ut.taste_id and ut.user_id=1)

Today's subliminal thought is:


  • Steam
  • Registratie: Juli 2001
  • Laatst online: 26-11-2021

Steam

just getting there

Kijk hier eens!
http://www.mysql.com/articles/ddws/64.html
(beter laat dan noit! :7 )

Nobody knows nothing... some of us just know very little


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Dat topic is bijna 10 maanden oud!
Ik mag hopen dat hij zijn problemen in de tussentijd al heeft opgelost...

Localhost, sweet localhost

Pagina: 1