Отличное присоединение к MySQL

Надеюсь, что кто-то может помочь мне с запросом MYSQL

У меня есть 3 таблицы базы данных:

  • точки интереса
  • point_of_interest_type
  • poi_poi_types

Таблица points_of_interest содержит все подробности о местности.

Таблица point_of_interest_type представляет собой список типов, например, ресторан, кафе, музей и т. д. В этой таблице также есть активный столбец (1 или 0).

poi_poi_types - это таблица сопоставления, поэтому она содержит идентификатор точки интереса и идентификатор типа точки интереса.

Точка интереса может иметь много типов точек интереса, поэтому потенциально может иметь несколько записей в таблице poi_poi_types.

Итак, результаты, которые я хочу, - это вернуть список points_of_interest, но только для активных типов точек интереса.

Это запрос codeignitor, который у меня есть до сих пор, но он неверен - он возвращает каждый момент фактической точки интереса, которая находится в таблице poi_poi_types

    $this->db->select('poi.*, poi_types.type as poi_type');
    $this->db->from('poi');
    $this->db->join('poi_poi_types', 'poi.id = poi_poi_types.poi_id');
    $this->db->join('poi_types', 'poi_types.id = poi_poi_types.poi_type_id');
    $this->db->where('poi_types.active', 1);

Итак, вы хотите сгруппировать свой результат по фактическим интересующим объектам, генерируя информацию poi.* только один раз, а информацию poi_types для каждого активного типа (в виде списка)?

Philipp Maurer 09.03.2018 16:44

Да, правильно - это именно то, чего я пытаюсь достичь

user1801579 09.03.2018 17:15

@ user1801579, вы пробовали ответ, который я опубликовал?

adprocas 12.03.2018 18:59

Да, я пробовал ... Это не на 100% правильно и по-прежнему не дает четкого результата для POI ... Если POI имеет две записи в таблице poi_poi_types, то получается два результата ... Мне нужен только один

user1801579 13.03.2018 10:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
59
1

Ответы 1

Я считаю, что это должно сработать. Ну, чтобы настроить его, чтобы оператор select был отличным. Я думаю, что это по сути сделало бы SELECT DISTINCT

$this->db->distinct();
$this->db->select('poi.*, poi_types.type as poi_type');
$this->db->from('poi');
$this->db->join('poi_poi_types', 'poi.id = poi_poi_types.poi_id');
$this->db->join('poi_types', 'poi_types.id = poi_poi_types.poi_type_id');
$this->db->where('poi_types.active', 1);

Другие вопросы по теме