|
|
|
Junior Member
      
участник
Last Login: 12.09.2005 0:53
Сообщ.: 19,
Visits: 210
|
|
Целевая платформа: MySQL
Есть основная таблица, users, в которой столбцы userID, name, itemID, stuffID, и дополнительные таблицы items (поля itemID и name) и stuffs (поля stuffID и name). Каким запросом получить записи таблицы users, чтобы вместо itemID и stuffID были подставлены поля name соответствующих таблиц? Сейчас делаю всё через SELECT ... FROM users, items, stuffs WHERE users.itemID = items.itemID и т.д., а с JOIN''ами не разобрался - так что прошу помощи =))
|
|
|
|
|
Junior Member
      
участник
Last Login: 12.09.2005 0:53
Сообщ.: 19,
Visits: 210
|
|
| ну может хоть кто-то на форуме дочитал какую-нибудь книжку по SQL до JOIN''ов?..
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
| а чем указанный самим же запрос не устраивает? зачем JOIN?
|
|
|
|
|
Junior Member
      
участник
Last Login: 12.09.2005 0:53
Сообщ.: 19,
Visits: 210
|
|
| а тем, что в моём запросе сначала считается декартово произведение трёх таблиц, а затем из них выбираются нужные строки по WHERE. если в таблицах по 1000 строк - декартово произведение содержит их 1000*1000*1000 - аля миллиард. JOIN же по полю с UNIQUE-ключом выполняется на порядки быстрее, плюс возвращаемый без JOIN-а рекордсет является read-only, что пока вроде не мешает, но очень может пригодиться...
|
|
|
|
|
Supreme Being
      
участник
Last Login: 14.05.2003 9:56
Сообщ.: 99,
Visits: 1 090
|
|
Это все просто table1 INNER JOIN table2 USING ( поле связи ) или table1 INNER JOIN table2 ON условие соединения
есть table1 LEFT JOIN table2 USING ( поле связи ) - это значит что связь будет левая, тобиш, если нет данных в table2 которые отвечают ключу в первой, то до полной таблицы будет дополнено NULL. Также есть table1 RIGHT JOIN table2 USING ( поле связи ).
И последний это CROSS JOIN, это тоже самое что и from table1, table2
|
|
|
|
|
Supreme Being
      
участник
Last Login: 14.05.2003 9:56
Сообщ.: 99,
Visits: 1 090
|
|
| А вообще лутше самому по таким вопросам обращаться к документации. Читать документации это совсем не тяжело.
|
|
|
|
|
Junior Member
      
участник
Last Login: 12.09.2005 0:53
Сообщ.: 19,
Visits: 210
|
|
тот сиквел, что я знаю, я изучил фактически по документации по MySQL, но иногда там не очень понятно написано... плюс ангельский язык... потому и приходится иногда спрошать совета на стороне...
по теме: пасиба всем ответившим, методом проб и ошибок остановился на tbl2 JOIN tbl1 USING(FieldID)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 14.05.2003 9:56
Сообщ.: 99,
Visits: 1 090
|
|
[off top]
Без английского далеко в программирование не уйдеш. Начинай его учить как можно раньше
[on top]
|
|
|
|