Hi Nigel, all !
Nigel Peck wrote:
> [[...]]
>
> My query is:
>
> SELECT
> `People`.`person_id`,
> `People`.`name`
> FROM
> `People`
> INNER JOIN
> `Person_postal_addresses`
> ON
> `Person_postal_addresses`.`person_id` = `People`.`person_id`
> WHERE
> `People`.`name` REGEXP 'example'
> OR
> `Person_postal_addresses`.`address` REGEXP 'example'
> ;
>
> How do I alter that to get one result per matching row in the People
> table? When there are multiple matches, for one row in People, for:
>
> `Person_postal_addresses`.`address` REGEXP '1'
>
> Thanks in advance,
> Nigel
I see two possibilities:
a) "SELECT DISTINCT ..."
http://dev.mysql.com/doc/refman/5.0/en/select.html
b) Use a subquery and an "EXISTS" predicate:
http://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html
I expect the subquery approach to be performing worse than the "distict".
HTH,
Jörg
--
Joerg Bruehe, MySQL Build Team,
[email protected]
Sun Microsystems GmbH, Sonnenallee 1, D-85551 Kirchheim-Heimstetten
Geschaeftsfuehrer: Thomas Schroeder, Wolfgang Engels, Dr. Roland Boemer
Vorsitzender des Aufsichtsrates: Martin Haering Muenchen: HRB161028
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[email protected]