1

Hello,

bon, j'y ai passé pas mal de temps, je dois passer à côté de qq chose.

Pour faire simple, on va dire que, j'ai une table x, avec un champ user id, 1 champ post. Une table y, un champ user_id, un autre meta, meta_fata.

dans meta, ya pleins de trucs sur les utilisateurs, dont avatar pour certains.

Je veux faire une jointure entre les 2, pour que ça me mette les avatars. Le problème si je fais
SELECT * FROM x x
LEFT JOIN y y ON x.user_id = y.user_id
WHERE y.meta = 'avatar'


Si la personne n'a pas d'avatar, bah je ne l'aurais pas alorq que j'aimerais quand même l'avoir, mais que ça rmeplisse genre NULL à la place. Mais je dois avouer que là je ne vois pas trop...

2

LEFT OUTER JOIN peut-être?
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

Ça ne change pas, je crois c'est la même chose.

Mais je viens de trouver, j'ai mit ça :
AND u.meta = 'avatar'

Après le ON, je pensais pas que je pouvais du coup j'ai pas essayé, j'ai perdu trop de temps pour rien ^^

4

sisi, c'est ca, il faut ajouter OUTER

5

Bah non, j'ai essayé ça n'a rien changé, il me semblait en plus qu'avec mysql c'était implicite le outer, non?

6

Oui, normalement le OUTER n'est pas obligatoire, tout comme le AS pour les alias, mais ça fait toujours plus propre de le mettre smile
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

7

Ah bon, je croyais que c'était INNER le défaut…
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !

9

Bah, en fait, c'est INNER le défaut si on ne met rien d'autre, mais LEFT est synonyme de LEFT OUTER, donc il n'est pas nécessaire de mettre OUTER ici.
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

10

et éviter le sucre syntaxique en écrivant

SELECT x.*,y.lebontruc FROM x, y
WHERE x.user_id = y.user_id
AND y.meta = 'avatar'

nan?

11

Mais ça, ça ne fonctionne que pour les jointures de type INNER.
Les LEFT [OUTER] JOIN doivent toujours êtres spécifiées explicitement.
(Enfin, tu dois pouvoir t'en tirer avec un truc du genre WHERE (x.user_id = y.user_id AND y.meta = 'avatar') OR x.user_id = y.user_id OR x.user_id NOT IN (SELECT y2.user_id FROM y AS y2) mais bon... sick)
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

12