J'ai deux tables dans ma base de données. L'une pour les commandes et l'autre pour les entreprises.
Les ordres ont cette structure :
OrderID | attachedCompanyIDs
------------------------------------
1 1,2,3
2 2,4
Et la société a cette structure :
CompanyID | name
--------------------------------------
1 Company 1
2 Another Company
3 StackOverflow
4 Nothing
Pour obtenir les noms des entreprises d'une commande, je peux effectuer une requête comme suit :
SELECT name FROM orders,company
WHERE orderID = 1 AND FIND_IN_SET(companyID, attachedCompanyIDs)
Cette requête fonctionne bien, mais la requête suivante ne fonctionne pas.
SELECT name FROM orders,company
WHERE orderID = 1 AND companyID IN (attachedCompanyIDs)
Pourquoi la première requête fonctionne-t-elle mais pas la seconde ?
La première requête renvoie :
name
---------------
Company 1
Another Company
StackOverflow
La deuxième requête ne donne que des résultats :
name
---------------
Company 1
Pourquoi la première requête renvoie-t-elle toutes les entreprises, alors que la seconde ne renvoie que la première ?