Ответы пользователя по тегу SQL
  • Как оптимизировать такой SQL запрос?

    gogametreveli
    @gogametreveli
    как то так , но третий подзапрос показывает на проблему с проектированием , все это будет работать при условии что в таблице postmeta есть уникальный ключ из двух полей meta_key, post_id
    SELECT
    posts.id,
    posts.post_title,
    v1.meta_value  as val_1,
    v2.meta_value  as val_2,
    (SELECT meta_value FROM postmeta WHERE meta_key='key_3' AND post_id=(SELECT meta_value FROM postmeta WHERE meta_key='key_4' AND post_id=posts.id LIMIT 1) LIMIT 1) as val_3
    FROM
    posts 
     left join postmeta v1 on (v1.meta_key='key_1' AND v1.post_id=posts.id) 
      left join postmeta v2 on (v2.meta_key='key_2' AND v2.post_id=posts.id)

    в идеале должно выглядеть так
    SELECT
    posts.id,
    posts.post_title,
    v1.meta_value  as val_1,
    v2.meta_value  as val_2,
    v3.meta_value  as val_3,
    
    FROM
    posts 
      left join postmeta v1 on (v1.meta_key='key_1' AND v1.post_id=posts.id) 
      left join postmeta v2 on (v2.meta_key='key_2' AND v2.post_id=posts.id)     
      left join postmeta v3 on (v2.meta_key='key_3' AND v2.post_id=posts.id)
    Ответ написан
  • Как правильно составить SQL запрос, 3 таблицы, одинаковые названия полей?

    gogametreveli
    @gogametreveli
    $sql = "SELECT city.name as city_name, region.name as region_name , country.name as country_name
    FROM city, region, country
    WHERE city.city_id = ?i AND region.region_id = ?i AND  country.country_id = ?i";
    
    $geo = $db->getall($sql,$ank['city_id'],$ank['regionid'],$ank['countryid']);
    Ответ написан
    Комментировать