Вы столкнулись с ошибкой «Неуникальная таблица/псевдоним», поскольку вы присоединяете таблицу третьего подменю к самой себе в своем запросе. Это происходит потому, что вы дважды используете одно и то же имя таблицы без создания псевдонима.
Чтобы решить эту проблему, вам необходимо правильно объединить все необходимые таблицы и использовать псевдонимы для ясности. Вот исправленная версия кода вашей модели:
Исправленный код:
//---------------------------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
Возникла ошибка «Неуникальная таблица/псевдоним» ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1727872347
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.
Подробнее здесь: [url]https://stackoverflow.com/questions/79042036/encountering-a-not-unique-table-alias-error[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия