die einzige Möglichkeit die ich bisher gefunden hab ist diese:
Code:
SELECT
`addressbook` . * , `addressbook_info_email`.`id_type` AS `email_id_type` ,
`addressbook_info_email`.`value` AS `email_value` ,
`addressbook_info_telephone`.`id_type` AS `telephone_id_type` ,
`addressbook_info_telephone`.`id_ccode` AS `telephone_id_ccode` ,
`addressbook_info_telephone`.`value` AS `telephone_value`
FROM `addressbook`
LEFT JOIN `addressbook_info_email` ON
`addressbook_info_email`.`id` =
(
SELECT `addressbook_info_email`.`id` FROM `addressbook_info_email` WHERE `addressbook`.`id` = `addressbook_info_email`.`id_addressbook` ORDER BY `addressbook_info_email`.`rank` ASC LIMIT 0,1
)
LEFT JOIN `addressbook_info_telephone` ON
`addressbook_info_telephone`.`id` =
(
SELECT `addressbook_info_telephone`.`id` FROM `addressbook_info_telephone` WHERE `addressbook`.`id` = `addressbook_info_telephone`.`id_addressbook` ORDER BY `addressbook_info_telephone`.`rank` ASC LIMIT 0,1
)
WHERE 1
ORDER BY `addressbook`.`name1` ASC , `addressbook`.`name2` ASC
LIMIT 0 , 200
leider dauert die abfrage etwa 1,5 Sekunden (woher 0,07 Sekunden).
vielleicht hat jemand einen tipp wie man das eleganter lösen kann?
explain liefert folgende Tabelle:
vielen dank,
tromton