Mysql. Связанные таблицы. Ниче не пойму. - Visavi.net https://visavi.net/ RSS - Visavi.net https://visavi.net/assets/img/images/logo_small.png RSS - Visavi.net https://visavi.net/ [email protected] (admin) [email protected] (admin) Sat, 30 Nov 2024 23:13:46 +0300 Да гавнокодеры есть везде, в том числе и на самом говнокоде. Также утверждение telnet&#039;а о том что парсер будет переносить запрос из ON в WHERE это полный бред равный нулю. Здесь вопрос больше дизайна и юзабилия кода касается. Я считаю что использование JOIN намного читабильнее и правильне, интуитивно понятнее. Я не представляю как нужно будет извращаться с запросомс &quot;запятой&quot;, когда нужно будет объединить более 2 таблиц, а если еще типы объединения разные. Я пишу запросы в приложениях, где помиомо ещенужно обращаться к справочникам для создания сложных отчетов. Например вот один не самый сложный, но очень удачный пример где человек знающий операции JOIN легко может понять суть запроса<br> <pre class="prettyprint"> $sql = &quot; SELECT {$PRE}lab_type_research.name, {$PRE}lab_markers.name_marker, {$PRE}lpu.name_lpu, {$PRE}lpu.lpu_id, {$PRE}lab_markers_values.id_type_research, {$PRE}lab_markers_values.marker_id, {$PRE}lab_markers_values.`values` AS status, count(*) AS col FROM {$PRE}lab_markers_values INNER JOIN {$PRE}lab_analyses ON {$PRE}lab_analyses.number_research = {$PRE}lab_markers_values.number_research AND {$PRE}lab_analyses.id_type_research = {$PRE}lab_markers_values.id_type_research AND {$PRE}lab_analyses.data BETWEEN &#039;{$data_first}&#039; and &#039;{$data_second}&#039; {$where_lpu} INNER JOIN {$PRE}lab_markers ON {$PRE}lab_markers_values.marker_id = {$PRE}lab_markers.marker_id INNER JOIN {$PRE}lab_type_research ON {$PRE}lab_type_research.research_id = {$PRE}lab_markers_values.id_type_research INNER JOIN {$PRE}lpu ON {$PRE}lpu.lpu_id = {$PRE}lab_analyses.lpu_id GROUP BY {$PRE}lab_analyses.lpu_id, {$PRE}lab_markers_values.id_type_research, {$PRE}lab_markers_values.marker_id, {$PRE}lab_markers_values.`values` ORDER BY {$PRE}lpu.lpu_id&quot;; </pre> https://visavi.net/topics/6959/183664 Mysql. Связанные таблицы. Ниче не пойму. aAligan Sun, 13 Jun 2010 15:11:31 +0400 Сообщения https://visavi.net/topics/6959/183664 Опа, а куда 4 поста стерли? Aligan ну ты в чем то прав.. Во всяком случае я разобрался где и когда надо join ставить. Хотя мне это никогда не надо было.<br> Ps. Есть здесь нормальные кодеры.. Но большинство говнокодеры https://visavi.net/topics/6959/183647 Mysql. Связанные таблицы. Ниче не пойму. Валерий Sun, 13 Jun 2010 14:13:12 +0400 Сообщения https://visavi.net/topics/6959/183647 phpcoder, потому что соединить и объединить это разные вещи. Перечисление в секции FROM вообще плохой тон. в твоем запросе нельзя использовать ни левое ни правое объединение, только внутренние. <br> Если хочешь больше критики запости запрос на сайте gavnokod.ru)))) https://visavi.net/topics/6959/183469 Mysql. Связанные таблицы. Ниче не пойму. Олег Sun, 13 Jun 2010 02:43:59 +0400 Сообщения https://visavi.net/topics/6959/183469 <blockquote class="blockquote"><strong>Aligan</strong> (14.03.10 / 04:26)<br> <pre class="prettyprint"> SELECT users.`*`, group.name FROM users LEFT JOIN group ON group.id = users.group_id WHERE id_user = $id_user ORDER BY users.id_user </pre></blockquote> Вот я ниразу не пользовался командой JOIN в запросах.. Я бы написал так:<br> <pre class="prettyprint"> SELECT users.name AS uname, group.name AS gname FROM users,group WHERE group.id=users.group_id AND users.id=&#039;$id_user&#039; ORDER BY users.id </pre> Вот скажите, мой запрос чем то хуже предыдущего? Или они одинаковы? https://visavi.net/topics/6959/183394 Mysql. Связанные таблицы. Ниче не пойму. Валерий Sun, 13 Jun 2010 00:09:11 +0400 Сообщения https://visavi.net/topics/6959/183394 8, т.е.? https://visavi.net/topics/6959/133676 Mysql. Связанные таблицы. Ниче не пойму. DmitryDick Fri, 19 Mar 2010 17:34:44 +0300 Сообщения https://visavi.net/topics/6959/133676 А индексы тут помогут? https://visavi.net/topics/6959/133476 Mysql. Связанные таблицы. Ниче не пойму. Max Fri, 19 Mar 2010 09:10:01 +0300 Сообщения https://visavi.net/topics/6959/133476 автор, ты бы структуру таблиц сменил, таблица, хранящая &quot;Команда(в ней поля ид, ид юзера, ид группы)&quot; и не нужна, просто добавляешь поле `group_id` в таблицу с юзерами и<br> <pre class="prettyprint"> select `users`.*, `groups`.`title` from `users` left join `groups` on `groups`.`id`=`users`.`group_id` </pre> https://visavi.net/topics/6959/132018 Mysql. Связанные таблицы. Ниче не пойму. DmitryDick Mon, 15 Mar 2010 06:39:22 +0300 Сообщения https://visavi.net/topics/6959/132018 можно было впринципе с внешним ключом подумать https://visavi.net/topics/6959/132016 Mysql. Связанные таблицы. Ниче не пойму. Azzido Mon, 15 Mar 2010 06:27:12 +0300 Сообщения https://visavi.net/topics/6959/132016 Сам разобрался. Мож кому пригодится:<br> SELECT users.*, groups.title FROM users LEFT JOIN command ON command.user=users.id LEFT JOIN groups ON groups.id = command.status<br> Время запроса - 0.0050 сек..<br> В отличие от 0.0015+0.0016х4+0.0016х4=0.0143 сек.<br> З.ы. И это таблице юзеров было только 4 записи;) https://visavi.net/topics/6959/131616 Mysql. Связанные таблицы. Ниче не пойму. SD Sun, 14 Mar 2010 13:11:32 +0300 Сообщения https://visavi.net/topics/6959/131616 <pre class="prettyprint"> SELECT users.`*`, group.name FROM users LEFT JOIN group ON group.id = users.group_id WHERE id_user = $id_user ORDER BY users.id_user </pre> https://visavi.net/topics/6959/131530 Mysql. Связанные таблицы. Ниче не пойму. Олег Sat, 13 Mar 2010 23:26:30 +0300 Сообщения https://visavi.net/topics/6959/131530 Дак а ты представь, если будет на странице 20 записей. 1 запрос на иды юзеров+20х1 запрос на узнавание ида группы+20х1 запрос на узнавание имени команды. Итого 41 запрос к бд. Нехило, да? Вот мне интересно, можно ли это в 1 запрос впихнуть, чтобы поле с именем из другой таблицы добавилось в результат запроса. Я так понимаю, надо юзать join, но вот вкурить его не могу..<img src="https://visavi.net/uploads/stickers/sad.gif" alt="sad"> https://visavi.net/topics/6959/131524 Mysql. Связанные таблицы. Ниче не пойму. SD Sat, 13 Mar 2010 22:50:46 +0300 Сообщения https://visavi.net/topics/6959/131524 1. <strong>Dark Person</strong>, как я понял, то тебе надо делать запрос и выводить в цикле этот айди. а с помощью него в цикле делать запрос, и уже делать вывод. ну я лично так делаю<img src="https://visavi.net/uploads/stickers/smile.gif" alt="smile"> https://visavi.net/topics/6959/131522 Mysql. Связанные таблицы. Ниче не пойму. chiper Sat, 13 Mar 2010 22:45:24 +0300 Сообщения https://visavi.net/topics/6959/131522 1) Допустим, есть три таблицы. Юзеры(поля ид, имя и.тд.), Команда(в ней поля ид, ид юзера, ид группы), Группы(ид, название, и.т.д).<br> Задача - зная ид юзера вывести название группы.<br> Можно сначала узнать ид группы, потом название, двумя запросами. Но если идов таких 10 или более, получается куча запросов и большое время генерации. Как это всё в один впихнуть? Чтобы, например, вывести всех юзеров(не все есть в таблице команда) и рядом с ними вывести название группы.<br> 2) допустим - гостевая. Та же ситуация, что и выше. Куча записей и надо вывести рядом с ником названия групп.<br> И, объясните, кто-нибудь про связанные таблицы вообще. Первичный ключ итд. Или линк подкиньте. Заранее спасибо. https://visavi.net/topics/6959/131519 Mysql. Связанные таблицы. Ниче не пойму. SD Sat, 13 Mar 2010 22:40:46 +0300 Сообщения https://visavi.net/topics/6959/131519