Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вопрос по SQL от начинающего...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: учу SQL, буду благодарен за помощь
Arhontsl
Отправлено: 21 Февраля, 2017 - 21:46:32
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




Здравствуйте, уважаемые форумчане!

Изучаю SQL, извините за, возможно, глупые вопросы..

Есть две таблицы. На выходе должна получиться третья.


https://docs[dot]google[dot]com/spreadsh[dot][dot][dot]edit?usp=sharing

Я понимаю, что нужно копать в сторону объединений. У меня даже получается по-отдельности вывести нужные данные (синтаксис MySQL).

CODE (sql):
скопировать код в буфер обмена
  1. SELECT `mu_id`,`mu_direction_give`,`curr_name` FROM `mark_ups` JOIN `currency` ON `curr_id`=`mu_direction_give` ORDER BY `mu_id`;
  2. SELECT `mu_id`,`mu_direction_get`,`curr_name` FROM `mark_ups` JOIN `currency` ON `curr_id`=`mu_direction_get` ORDER BY `mu_id`;
  3.  


Но все же конечного результата не могу достичь. Помогите, пожалуйста, кто опытный.
(Добавление)
Все-таки родил такое решение

CODE (sql):
скопировать код в буфер обмена
  1.  
  2. SELECT T1.`curr_name`, T2.`curr_name`, T1.`mark_up_cnt` FROM (SELECT `mu_id`,`mu_direction_give`,`curr_name`, `mark_up_cnt` FROM `mark_ups` JOIN `currency` ON `curr_id`=`mu_direction_give` ORDER BY `mu_id`) T1, (SELECT `mu_id`,`mu_direction_get`,`curr_name` FROM `mark_ups` JOIN `currency` ON `curr_id`=`mu_direction_get` ORDER BY `mu_id`) T2 WHERE T1.`mu_id`=T2.`mu_id`;
  3.  


Покритикуйте, пожалуйста, насколько оно рациональное.

(Отредактировано автором: 21 Февраля, 2017 - 21:48:29)

 
 Top
Arhontsl
Отправлено: 28 Февраля, 2017 - 11:05:55
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




Не понимаю, никто не может покритиковать мой вариант? По-моему там не очень рационально. И синтаксически и с точки зрения скорости обработки.

(Отредактировано автором: 28 Февраля, 2017 - 11:06:20)

 
 Top
Мелкий Супермодератор
Отправлено: 28 Февраля, 2017 - 11:37:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




В вопросе отсутствуют исходные данные. А ходить по всяким гуглодокам желания нет.

Фокус в присоединении одной и той же таблицы-справочника несколько раз лишь в том, чтобы раздать алиасы.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `mu_id`,`mu_direction_give`, dgive.`curr_name`, dget.`curr_name`
  2. FROM `mark_ups`
  3. JOIN `currency` AS dgive ON dgive.`curr_id`=`mu_direction_give`
  4. JOIN `currency` AS dget ON dget.`curr_id`=`mu_direction_get`
  5. ORDER BY `mu_id`;


-----
PostgreSQL DBA
 
 Top
Arhontsl
Отправлено: 03 Марта, 2017 - 19:16:16
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




Мелкий пишет:
В вопросе отсутствуют исходные данные. А ходить по всяким гуглодокам желания нет.


А что плохого в ссылке на google-таблицу? Ведь это гораздо удобнее, чем излагать эти самые данные в теме. Таким образом я проявляю уважение к пользователям форума, предоставляя информацию в удобной форме. Или лучше чтобы я неаккуратно вставил сюда просто текстом или картинкой (из которой ничего нельзя скопировать)?

Но спасибо за ответ.

(Отредактировано автором: 03 Марта, 2017 - 19:16:56)

 
 Top
Мелкий Супермодератор
Отправлено: 03 Марта, 2017 - 20:45:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Я ответил за себя лично, мнение может не совпадать с другими участниками.
Картинки для текстовых данных неприемлемы. Отформатировать таблицу такого плана проблемы не составляет в моноширинном виде, из дефолтного клиента mysql копируется и всё. Хороший вариант оформления - DDL запросы создания минимального окружения и описание желаемого результата. Способ позволяет и быстро скопировать-поиграться с локальной базой и не представляет трудности при чтении с минимальным выравниванием.

По мотивам:
Цитата:
Пример в SQL Fiddle улучшает вопрос, но не является достаточным сам по себе.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB