Templotion Logo

🔗 Як витягнути пов’язані дані в Notion, якщо бази пов’язані не напряму

У роботі з Notion нерідко виникає ситуація, коли потрібно відобразити дані з бази даних, яка не пов’язана напряму, а лише через іншу базу.

У цій статті покажу, як за допомогою функцій lets і map можна обійти це обмеження і “витягнути” потрібну інформацію. Розглянемо це на простому прикладі — CRM-системи в Notion.


📦 Приклад: Клієнти, Замовлення і Товари

Уявімо, що у нас є три таблиці (три бази даних):

  1. Клієнти — це ваші покупці
  2. Замовлення — що саме і коли вони купили
  3. Товари — що саме ви продаєте

Зв’язки:

🔗 Але Клієнт напряму не пов’язаний із Товарами. І саме це ми хочемо вирішити.


🎯 Мета: побачити, які Товари купував кожен Клієнт

Зробимо це за кілька кроків у базі Клієнти за допомогою lets і map.

“Чому саме lets? Бо він дозволяє зберігати кілька змінних одразу і повернути будь-яку з них у кінці.”


🛠️ Крок 1: Створити зв’язок

Переконайтесь, що:


🧠 Крок 2: Витягуємо товари через lets і map

У базі Клієнти створюємо нове поле “Товари” типу Formula і вставляємо формулу:

lets (
      товари,
    prop("Замовлення")
      .map(current.prop("Товари")
        .map(current.prop("Name"))
        .join("\\n"))
      .join("\\n")
    ,
      
      товари
    )

Що вона робить?

🧠 Таким чином, формула витягує всі назви товарів, які були в замовленнях клієнта, і показує їх вертикальним списком — чисто, зрозуміло й без зайвих ком.

👉 Порада: Додай маркери для зручності читання

Щоб зробити список товарів візуально приємнішим, можна додати маркер перед кожною назвою. Для цього трохи змінимо формулу:


lets(
  товари,
    prop("Замовлення")
      .map(
        current.prop("Товари")
          .map("• " + current.prop("Name"))
          .join("\n")
      )
      .join("\n"),

  товари
)
            

🔍 Що змінилось:

"• " + current.prop("Name") — додає символ перед кожною назвою товару.

📌 У підсумку отримаємо акуратний список із булітами, який легко сприймається навіть при великій кількості товарів.


🧠 Крок 3: Витягуємо всі потрібні дані

    ***(ціни, загальна сума)***

Коли в базі Товари вже є ціни — слушно прямо в базі Клієнти витягнути вартість кожного товару і загальну суму їх вартості. Це додасть завершеності процесу, покаже повну картину по клієнту, і дасть змогу робити аналіз без переходів між таблицями.

Тут знову стануть в пригоді lets, map і join, і додамо новеньке — sum, щоб порахувати загальну вартість.


➕ Додаємо формулу Товари (2) в таблицю Клієнти:

lets(
    товари,
      prop("Замовлення")
        .map(
          current.prop("Товари")
            .map("• " + current.prop("Name") + " — " + format(current.prop("Ціна")) + " грн")
            .join("\\n")
        )
        .join("\\n"),
    
    сума,
      prop("Замовлення")
        .map(
          current.prop("Товари")
            .map(current.prop("Ціна"))
            .sum()
        )
        .sum(),
    
    товари + "\\n\\nЗагальна сума: " + format(сума) + " грн"
    )

🧾 Що вона робить:

🧾 Що ця формула робить — докладно

✨ Тепер клієнтська картка виводить повний перелік товарів і підсумкову суму — все автоматично.


🧩 Що ще можна зробити


🧩 Як застосувати цей підхід в інших випадках?

Цей підхід із lets, map і join можна адаптувати до будь-якої ситуації, де потрібно отримати інформацію через проміжну базу. Це відкриває безліч можливостей — не тільки для бізнесу.

Декілька прикладів з різних сфер:


🧑‍🏫 Освіта


📚 Особисті проєкти


👨‍👩‍👧‍👦 Для сім'ї


🏕 Волонтерство або події


📌 Якщо коротко: у будь-якому випадку, де є ланцюжок типу А → В → С, цей підхід дозволяє “витягнути” С з точки А — легко, красиво і без зайвих ролапів.

🗨️ Додавай свої коментарі, долучайся до обговорень!

До Telegram-каналу