Mam 2 tabele w mojej bazie danych. Jeden do zamówień, a drugi do firm.
Zamówienia mają następującą strukturę:
OrderID | attachedCompanyIDs
------------------------------------
1 1,2,3
2 2,4
Firma ma taką strukturę:
CompanyID | name
--------------------------------------
1 Company 1
2 Another Company
3 StackOverflow
4 Nothing
Aby uzyskać nazwy firm z zamówienia, mogę wykonać takie zapytanie:
SELECT name FROM orders,company
WHERE orderID = 1 AND FIND_IN_SET(companyID, attachedCompanyIDs)
To zapytanie działa dobrze, ale następujące zapytanie nie.
SELECT name FROM orders,company
WHERE orderID = 1 AND companyID IN (attachedCompanyIDs)
Dlaczego pierwsze zapytanie działa, a drugie nie?
Pierwsze zapytanie zwraca:
name
---------------
Company 1
Another Company
StackOverflow
Drugie zapytanie zwraca tylko:
name
---------------
Company 1
Dlaczego tak jest, dlaczego pierwsze zapytanie zwraca wszystkie firmy, a drugie zapytanie zwraca tylko pierwszą?