The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Mysqljoin"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (MySQL)
Изначальное сообщение [ Отслеживать ]

"Mysqljoin"  +/
Сообщение от reverb on 07-Июн-13, 20:35 
Имеются 2 таблицы. Делаем выборку * собъединением

mysql> SELECT * FROM nomenclature INNER JOIN description;
+----+-----------+----+---------------------+
| id | name      | id | description         |
+----+-----------+----+---------------------+
|  1 | Книга     |  1 | Замечательная книга |
|  2 | Табуретка |  1 | Замечательная книга |
|  3 | Карандаш  |  1 | Замечательная книга |
|  1 | Книга     |  3 | Красный карандаш    |
|  2 | Табуретка |  3 | Красный карандаш    |
|  3 | Карандаш  |  3 | Красный карандаш    |
|  1 | Книга     |  5 | Зелёная машинка     |
|  2 | Табуретка |  5 | Зелёная машинка     |
|  3 | Карандаш  |  5 | Зелёная машинка     |
+----+-----------+----+---------------------+
9 rows in set (0.00 sec)

Но вот как быть если надо выбрать SELECT id,name,description FROM nomenclature INNER JOIN description;

Mysql ругается на ERROR 1052 (23000): Column 'id' in field list is ambiguous

Как побороть?

Ответить | Правка | Cообщить модератору

Оглавление

  • Mysqljoin, reverb, 22:11 , 07-Июн-13, (1)  
    • Mysqljoin, DeadLoco, 14:31 , 10-Июн-13, (2)  
      • Mysqljoin, reverb, 20:08 , 10-Июн-13, (3)  
        • Mysqljoin, DeadLoco, 20:50 , 10-Июн-13, (4)  

Сообщения по теме [Сортировка по времени | RSS]


1. "Mysqljoin"  +/
Сообщение от reverb on 07-Июн-13, 22:11 
>[оверквотинг удален]
>    |
> |  3 | Карандаш  |  5 | Зелёная машинка
>     |
> +----+-----------+----+---------------------+
> 9 rows in set (0.00 sec)
> Но вот как быть если надо выбрать SELECT id,name,description FROM nomenclature INNER
> JOIN description;
> Mysql ругается на ERROR 1052 (23000): Column 'id' in field list is
> ambiguous
> Как побороть?

Ээх, ну указал с какой таблицы id :)
Вопрос снят.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Mysqljoin"  +/
Сообщение от DeadLoco (ok) on 10-Июн-13, 14:31 
> Ээх, ну указал с какой таблицы id :)

На будущее: крайне настоятельно рекомендуется в любых запросах алиасить имена таблиц, даже если она одна.

SELECT w.*
FROM table AS w
WHERE w.key = blabla
ORDER BY w.value ASC;

SELECT w.value
FROM table1 AS w
JOIN table2 AS z ON z.id = w.zid
WHERE w.key = blabla
  AND z.key = foofoo
ORDER BY w.value ASC;

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Mysqljoin"  +/
Сообщение от reverb on 10-Июн-13, 20:08 
>[оверквотинг удален]
>
SELECT w.* 
> FROM table AS w
> WHERE w.key = blabla
> ORDER BY w.value ASC;
> SELECT w.value
> FROM table1 AS w
> JOIN table2 AS z ON z.id = w.zid
> WHERE w.key = blabla
>   AND z.key = foofoo
> ORDER BY w.value ASC;
 

Почему так? С точки зрения производительности?

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Mysqljoin"  +/
Сообщение от DeadLoco (ok) on 10-Июн-13, 20:50 
> Почему так? С точки зрения производительности?

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


SELECT w.id, w.name, z.title AS job_title, s.title AS tool_title
   FROM users AS w
   JOIN jobs  AS z ON z.id = w.job_id
   JOIN tools AS s ON s.id = z.tool.id
   WHERE s.id = somevalue
     AND w.id IN (1,3,5,7)
   ORDER BY w.id, z.id, s.id;
и

SELECT users.id, users.name, jobs.title AS job_title, tools.title AS tool_title
   FROM users
   JOIN jobs  ON jobs.id = users.job_id
   JOIN tools ON tools.id = jobs.tool_id
   WHERE tools.id = somevalue
     AND users.id IN (1,3,5,7)
   ORDER BY users.id, jobs.id, tools.id;

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру