LINUX.ORG.RU

[sql] [mysql] Помогите составить запрос

 ,


0

0

Привет.

Есть две сферические таблицы:

CREATE TABLE `users` (
`id` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
);

CREATE TABLE `posts` (
`id` MEDIUMINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` TINYINT(3) UNSIGNED NOT NULL,
`post` TEXT NOT NULL,
PRIMARY KEY (`id`)
);

Подскажите самый простой запрос, который бы выводил поля `users.name`, `posts.post` где `posts.user_id` соответствует `users.id`. Тут ведь можно без джойнов?

select u.name, p.post from users as u left join posts p on u.id=p.userid;

ovax ★★★
()

Можно и без джойнов (хотя это не очень правильно),

select u.name, p.post from users as u, posts as p where p.user_id = u.id

PartyZan ★★★
()
Ответ на: комментарий от PartyZan

ЕМНИП, тот же джойн? Просто некий синтаксический сахар..

boombick ★★★★★
()
Ответ на: комментарий от PartyZan

в мускуле перечисление через запятую эквивалентно INNER JOIN, только с меньшим приоритетом. И это ничуть не менее правильно.

nu11 ★★★★★
()
Ответ на: комментарий от anonymous

Ну например, старый оракл (версии 8) join не поддерживает в запросах :-)

no-dashi ★★★★★
()
Ответ на: комментарий от PartyZan

это с джойнами, просто другая запись.

qnikst ★★★★★
()
Ответ на: комментарий от nu11

>в мускуле перечисление через запятую эквивалентно INNER JOIN, только с меньшим приоритетом. И это ничуть не менее правильно.
cross join, если быть точным. «иннер» из этого получается добавлением условия where

heisenberg ★★
()
Ответ на: комментарий от heisenberg

если быть совсем точным, то в мускуле cross join == inner join :)

nu11 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.