Je travaille sur un forum et, comme dans tous les forums, il y a des discussions et des réponses. Ce sont les tableaux que j'utilise dans la base de données pour les stocker:Comment faire une instruction dynamic if dans SQL?
post
------------
id
user_id
time
type
effective_id
thread
------------
id
update_time
text
response_number
deleted
response
------------
id
container_id
text
deleted
Le post.type
est un enum('thread', 'response')
, et le post.effective_id
doit correspondre à un thread.id
ou un response.id
selon ce que le post.type
indique.
Comme vous pouvez le voir, je factorise tout ce que les threads et les réponses ont en commun.
Voici le problème que je l'ai rencontré: je veux déterminer si un poste donné a été supprimé (ayant son id
que des informations) dans une requête et unique sans déplacer le champ deleted
à la table post .
Ce sont les requêtes que j'utiliserais si je savais à l'avance si l'identifiant donné appartient à un thread ou à une réponse.
SELECT thread.deleted
FROM post INNER JOIN thread ON post.effective_id = thread.id
ou
SELECT response.deleted
FROM post INNER JOIN response ON post.effective_id = response.id
Mais comment puis-je dire dans SQL, "if the post.type is thread then INNER JOIN with thread and get the deleted field, if post.type is response then INNER JOIN with response and get the delete field.
"? J'aurais besoin d'une sorte de "si" dynamique
Est-ce encore possible de faire avec les conditions spécifiées?
Merci!
C'est exactement ce que je cherchais, merci! – federicot