Возникла ошибка «Неуникальная таблица/псевдоним»Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Возникла ошибка «Неуникальная таблица/псевдоним»

Сообщение Anonymous »

Вы столкнулись с ошибкой «Неуникальная таблица/псевдоним», поскольку вы присоединяете таблицу третьего подменю к самой себе в своем запросе. Это происходит потому, что вы дважды используете одно и то же имя таблицы без создания псевдонима.
Чтобы решить эту проблему, вам необходимо правильно объединить все необходимые таблицы и использовать псевдонимы для ясности. Вот исправленная версия кода вашей модели:
Исправленный код:
//---------------------------get Main Menu Name by Menu id-----------------------------------
function getMainMenuNameOfSubmenu($thirdsubmenu_id)
{
$this->load->database();

// Using aliases for tables to avoid conflicts
$this->db->select('m.menu_name, s.submenu_name, ts.thirdsubmenu_name');
$this->db->from('thirdsmcontentdetails tscd');
$this->db->join('thirdsubmenu ts', 'ts.thirdsubmenu_id = tscd.thirdsubmenu_id');
$this->db->join('submenu s', 's.submenu_id = ts.submenu_id');
$this->db->join('mainmenu m', 'm.mainmenu_id = s.mainmenu_id');
$this->db->where('tscd.thirdsubmenu_id', $thirdsubmenu_id);

$query = $this->db->get();

return $query->row();
}
[```](https://dddcodigo.com.br/ddd-11/)

### Explanation:

1. **Aliases**: I used aliases (`ts`, `s`, `m`, and `tscd`) to avoid conflicts and make the query more readable.
2. **Joins**:
- `thirdsmcontentdetails` (aliased as `tscd`) is joined with `thirdsubmenu` (aliased as `ts`) based on the `thirdsubmenu_id`.
- `thirdsubmenu` is joined with `submenu` (aliased as `s`) on `submenu_id`.
- `submenu` is joined with `mainmenu` (aliased as `m`) on `mainmenu_id`.
3. **Selecting Fields**: The `SELECT` statement specifies the columns you want to retrieve (`menu_name`, `submenu_name`, `thirdsubmenu_name`).
4. **Where Clause**: The `WHERE` condition is used to filter by the specific `thirdsubmenu_id`.

This query should work as expected without throwing the "Not unique table/alias" error.

In this case, I tried joining the `thirdsubmenu` table with itself, which caused a conflict due to using the same table name without creating an alias. I was expecting to retrieve the `menu_name` from the `mainmenu` table by joining the related tables (`thirdsubmenu`, `submenu`, and `mainmenu`), but the query failed with the "Not unique table/alias" error because the database didn't know which instance of the `thirdsubmenu` table to reference. By adding proper table aliases, the query will avoid this conflict and return the expected data.


Подробнее здесь: https://stackoverflow.com/questions/790 ... lias-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»