Как получить данные из нескольких таблиц?

Здравствуйте!

Извините, что по-русски, английский знаю плохо! Поэтому и поискать здесь толком не могу…

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

  1. Users (user_id, user_name…)
  2. Karma_list (karma_list_id, karma_name, karma_weight)
  3. Karma (karma_id, user_id, karma_list_id, date).

Когда захожу на вкладку конкретного user_id, я хочу, чтобы показывало список кармы за СЕГОДНЯШНЮЮ ДАТУ (+вес).
Я умею подобное делать SQL запросами, но как это сделать в Glide не могу найти…
Таблицы в “Google Sheets”, если это важно.

Помогите, пожалуйста!
Если что-то подобное уже здесь разбиралось, то можно ссылкой на тему.

Заранее спасибо!

Google translater:
Hello!

Sorry in Russian, English I know badly! Therefore, I really can’t look here …

I have 3 tables:

  1. users (user_id, user_name …)
  2. Karma_list (karma_list_id, karma_name, karma_weight)
  3. Karma (karma_id, user_id, karma_list_id, date).

When I go to the tab of a particular user_id, I want to show the list of karma for today’s date (+weight).
I can do this SQL with requests, but I can’t find how to do it in Glide …
Tables in “Google Sheets”, if important.

Help me please!
If something similar has already been versed here, then you can refer to the topic.

Thanks in advance!

Я могу вам помочь, но я не могу визуализировать таблицы Karma - не могли бы вы добавить скриншот каждой из таблиц Karma_list и Karma (из редактора данных Glide).


I can help you, but I can't quite visualise the Karma tables - would you mind adding a screen shot of each of the Karma_list and Karma tables (from the Glide Data Editor).

Like this?
I can give you a team if needed.

Спасибо, это помогает.

Можете ли вы объяснить назначение вашей таблицы кармы?
Планируете ли вы использовать это для создания отношений «многие ко многим» между пользователями и вашим Karma_list?
Я вижу, что в этой таблице есть столбцы user_id и karma_id. Но оба кажутся столбцами отношений, что мне кажется неправильным.


Thanks, that helps.

Can you explain the purpose of your Karma table?
Do you plan to use that to create a many to many relationship between Users and your Karma_list?
I see that you have user_id and karma_id columns in that table. But both appear to be relation columns, which doesn’t look right to me.

Да, полагаю, мне нужны “многие ко многим”. Я сделал “karma_list” и “karma” исходя из прошлого опыта программирования в SQL, т.е. я могу получить данные по ID запросом SQL.
В Glide, видимо другая парадигма, возможно, с “relation” я ошибаюсь.

Могу объяснить на примере:
УЧИТЕЛЬ ставит сегодня некоторые оценки (карму из списка karma_list) разным ученикам. На каждого ученика может быть несколько записей кармы в один день.
Это всё добавляется в таблицу “Карма”, где
user_id - id пользователя (“users” table)
karma_id - id кармы (“karma_list” table)
date - сегодняшняя дата автоматически

РОДИТЕЛИ учеников потом видят эти оценки списком за СЕГОДНЯШНИЙ ДЕНЬ (или за прошлые даты).
(вес кармы я наверно сам уже потом как-нибудь смайлами обрисую в зависимости от… веса )

Yes, I guess I need many-to-many. I made “karma_list” and “karma” based on past SQL programming experience, i.e. I can get data by ID with SQL query.
In Glide, apparently a different paradigm, maybe I’m wrong with “relation”.

I can explain with an example:
The TEACHER puts some grades (karma from the karma_list) for different students today. Each student can have several karma records in one day.
All this is added to the “Karma” table, where
user_id - user id (“users” table)
karma_id - karma id (“karma_list” table)
date - today’s date automatically

PARENTS of students then see these grades in a list for TODAY (or past dates).
(I’ll probably outline the weight of karma myself later somehow with emoticons, depending on … weight)

Хорошо, я понял. Объясню пошагово…

Я предполагаю, что ваша таблица пользователей также содержит ваших студентов. Если это не так, возможно, потребуется изменить некоторые из приведенных ниже параметров.

В вашей таблице кармы:

  • user_id должен быть основным текстовым столбцом.
  • karma_id также должен быть основным текстовым столбцом.

Когда учитель ставит оценки ученику, идентификатор ученика (Users->RowID) должен идти в столбец user_id, а Karma_ListID (karma_list->RowID) — в столбец karma_id. Дату можно добавить, используя специальное значение «Текущая дата/время».

В вашей таблице пользователей:

  • создайте столбец отношения multiple, который сопоставляет Users->RowID с Karma->user_id. Это даст вам список записей кармы для каждого ученика. Фильтрация по дате — это отдельный шаг. Я не буду освещать это сейчас.

В вашей таблице кармы:

  • создать отношение single, которое соответствует karma_id для karma_list->RowID
  • добавить столбец поиска для получения karma_name через одиночное отношение
  • добавить второй столбец поиска для получения karma_weight через отношение


Okay, I understand. Let me explain step by step...

I will assume that your Users table also contains your Students. If that’s not correct, then some of the below may need to change.

In your Karma table:

  • user_id should be a basic text column.
  • karma_id should also be a basic text column.

When a teacher adds the grades for a student, the Students ID (Users->RowID) should go to the user_id column, and the Karma_ListID (karma_list->RowID) should go to the karma_id column. The Date can be added using the “Current Date/Time” special value.

In your Users table:

  • create a multiple relation column that matches Users->RowID to Karma->user_id. This will give you a list of Karma entries for each student. To filter by date is a separate step. I won’t cover this now.

In your Karma table:

  • create a single relation that matches the karma_id to karma_list->RowID
  • add a lookup column to fetch the karma_name via the single relation
  • add a second lookup column to fetch the karma_weight via the relation

Пытаюсь занести значение (как учитель), но никак не могу получить значение “users->Row ID” на странице ученика.
Есть какая-то специальная запись для подобных вызовов?

I’m trying to enter a value (as a teacher), but I can’t seem to get the “users->Row ID” value on the student page.
Is there any special entry for such calls?

Позвольте мне предложить лучший подход:

  • Удалите встроенный список с этого экрана.
  • Вместо этого добавьте кнопку формы и назовите ее «Добавить карму».
    – целевым листом для формы должна быть карма
  • На экране формы добавить компонент выбора
    – Источником компонента выбора должна быть таблица karma_list
    – Выбор должен записать значение в столбец karma_id
  • Также добавьте компонент «Значения с экрана». Здесь вы сможете выбрать UserID (RowID)

  • И если вы хотите, чтобы дата была при отправке формы, вы можете использовать компонент Special Value (текущая дата/время)

Screen Shot 2022-10-13 at 8.14.32 PM


Let me suggest a better approach:
  • Remove the Inline List from that screen.
  • Instead, add a Form Button and label it “Add Karma”
    – the target sheet for the form should be karma
  • On the form screen, add a choice component
    – The source for the choice component should be the karma_list table
    – The choice should write the value to karma_id column
  • Also add a “Values from Screen” component. Here you will be able to select the UserID (RowID)

  • And if you want the Date to be when the form is submitted, you can use a Special Value component (Current Date/Time)

Screen Shot 2022-10-13 at 8.14.32 PM

Да, это получилось, записывает как надо!
(напихал им разного в разные даты)

Теперь как вывести всё это на странице пользователя?

Yes, it turned out, it records as it should!
(stuffed them different things on different dates)

Now how to display all this on the user page?

В вашей таблице Users у вас должен быть столбец с несколькими отношениями, который соответствует UserID с Karma->user_id.

Вы можете использовать этот столбец в качестве источника компонента встроенного списка на экране сведений о пользователе.


In your Users table, you should have a multiple relation column that matches UserID with Karma->user_id.

You can use this column as the source of an Inline List component on your User Details Screen.