I've been playing with this query for 3 hours to no avail - does anyone see an error in it that I don't?
SELECT DISTINCT
organization.id
FROM
organization,
unit,
unit_contains_service,
unit_speaks_language
WHERE
(
organization.name LIKE '%exchange%'
OR organization.address_one LIKE '%exchange%'
OR organization.zip LIKE '%exchange%'
)
OR
(
unit_contains_service.fk_service_id='exchange'
AND unit_contains_service.fk_unit_id=unit.id
)
OR
(
unit_speaks_language.fk_language_id='exchange'
AND unit_speaks_language.fk_unit_id=unit.id
)
AND
unit.fk_organization_id=organization.id;
table descriptions for reference
[FONT=Courier New]mysql> desc organization;
+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| id | int(4) | | PRI | NULL | auto_increment |
| name | varchar(50) | YES | MUL | NULL | |
| address_one | varchar(150) | YES | | NULL | |
| address_two | varchar(50) | YES | | NULL | |
| fk_city_id | int(4) | YES | | NULL | |
| fk_county_id | int(3) | YES | | NULL | |
| zip | int(5) | YES | | NULL | |
| phone | int(10) | YES | | NULL | |
| phone2 | int(10) | YES | | NULL | |
| tollFreePhone | int(10) | YES | | NULL | |
| tollFreePhone2 | int(10) | YES | | NULL | |
| fax | int(10) | YES | | NULL | |
| email | varchar(75) | YES | | NULL | |
| description | longtext | YES | | NULL | |
+----------------+--------------+------+-----+---------+----------------+
14 rows in set (0.00 sec)
mysql> desc unit;
+--------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+----------------+
| id | int(4) | | PRI | NULL | auto_increment |
| fk_organization_id | int(4) | YES | | NULL | |
| name | varchar(75) | YES | | NULL | |
| address_one | varchar(150) | YES | | NULL | |
| address_two | varchar(50) | YES | | NULL | |
| fk_city_id | int(4) | YES | | NULL | |
| fk_county_id | int(3) | YES | | NULL | |
| zip | int(5) | YES | | NULL | |
| phone | int(10) | YES | | NULL | |
| phone2 | int(10) | YES | | NULL | |
| tollFreePhone | int(10) | YES | | NULL | |
| tollFreePhone2 | int(10) | YES | | NULL | |
| fax | int(10) | YES | | NULL | |
| email | varchar(75) | YES | | NULL | |
| description | longtext | YES | | NULL | |
+--------------------+--------------+------+-----+---------+----------------+
15 rows in set (0.00 sec)
mysql> desc unit_contains_service;
+---------------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------+------+-----+---------+----------------+
| id | int(5) | | PRI | NULL | auto_increment |
| fk_unit_id | int(4) | YES | | NULL | |
| fk_service_id | int(4) | YES | | NULL | |
+---------------+--------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
mysql> desc unit_speaks_language;
+----------------+--------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------+------+-----+---------+----------------+
| id | int(4) | | PRI | NULL | auto_increment |
| fk_unit_id | int(4) | YES | | NULL | |
| fk_language_id | int(3) | YES | | NULL | |
+----------------+--------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
[/FONT]