|
|
|
Основы запросов
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Я уже 2 года, как пытаюсь работать с сайтами. Но за все это время, к моему же удивлению, я пользуюсь обыкновенными запросами: mysql insert, select, delete, update и т.д. Когда вижу сайты, которые делают веб программисты, не понимаю ничего в их запросах. Посидев, и полистав темы на этом форуме, вообще остался в шоке, от того, что может делать мускул (их принци работы не знаю, но все же ооочень много нового). Я например не в курсе, как объединять запросы, ключевые слова AS, IN, JOIN и т.д. Поэтому хотелось бы попросить на источник, где расписано более подробно, как ими пользоваться, в каких ситуациях и т.д. Для быстрой работы сайта, многие знают, что нужно следить за одним из самых главных факторов - количество и сложность запросов. Хотелось бы научиться многому, но поискав в гугле, ничего подробного не нашел. (уж извините меня, до меня не доходит все быстро) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2014, 18:27:19 |
|
||
|
Основы запросов
|
|||
|---|---|---|---|
|
#18+
SQL-EX.RU (справа выбрать из списка СУБД - MySQL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2014, 13:54:10 |
|
||
|
Основы запросов
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, спасибо, то что нужно. ---- Дабы не создавать новых тем, хочу спросить у вас. Остановился на 6м задании. первые пять сделал сразу, т.к. были простые операции. 6 задание связано с join' ами. Условие: --- Схема БД состоит из четырех таблиц: Product(maker, model, type) PC(code, model, speed, ram, hd, cd, price) Laptop(code, model, speed, ram, hd, price, screen) Printer(code, model, color, type, price) Таблица Product представляет производителя (maker), номер модели (model) и тип ('PC' - ПК, 'Laptop' - ПК-блокнот или 'Printer' - принтер). Предполагается, что номера моделей в таблице Product уникальны для всех производителей и типов продуктов. В таблице PC для каждого ПК, однозначно определяемого уникальным кодом – code, указаны модель – model (внешний ключ к таблице Product), скорость - speed (процессора в мегагерцах), объем памяти - ram (в мегабайтах), размер диска - hd (в гигабайтах), скорость считывающего устройства - cd (например, '4x') и цена - price. Таблица Laptop аналогична таблице РС за исключением того, что вместо скорости CD содержит размер экрана -screen (в дюймах). В таблице Printer для каждой модели принтера указывается, является ли он цветным - color ('y', если цветной), тип принтера - type (лазерный – 'Laser', струйный – 'Jet' или матричный – 'Matrix') и цена - price. --- А вот сама задача: --------- Найти производителя, номер модели и цену каждого компьютера, имеющегося в базе данных: ---------- Далее дается ему решение: --- SELECT maker, Product.model AS model_1, PC.model AS model_2, price FROM Product INNER JOIN PC ON PC.model = Product.model ORDER BY maker, model_2 --- Читаю бесконца одни и те же строки, НУ НИКАК не могу понять работу этих join'ов. Скажите пожалуйста, что и как это понять ? Читал я мануал на разных сайтах. Никак не могу понять их работу. Вот как я понял: maker, Product.model AS model_1 - maker переименовываем в model_1 и добавляем поле Product.model PC.model AS model_2, price - PC.model переименовываем в model_2. А price то откуда берет значение, если в таблице product нет этого поля ??? Читал я мануал с этого сайта: http://www.sql-tutorial.ru/ru/book_explicit_join_operations.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2014, 18:36:04 |
|
||
|
Основы запросов
|
|||
|---|---|---|---|
|
#18+
AllReady , к сожалению, согласно подписанным вами правилам сайта SQL-EX.RU, обсуждение задач где-нибудь, кроме форума сайта, запрещено. Могу посоветовать осмысленно прочитать "справку по теме", прилагаемую к каждой задаче (ятд, оно того стоит, особенно кайф от самостоятельного решения ). В случае больших затруднений с решением задач (если ничего не изменили на сайте - давно там не был) - допускается обращение в техподдержку сайта с описанием проблемы. Так же после решения задачи советую посмотреть в форуме сайта обсуждение задачи и решения от других участников PS. в моей версии сайта задание имеет другую формулировку... №6 Для каждого производителя, выпускающего ПК-блокноты c объёмом жесткого диска не менее 10 Гбайт, найти скорости таких ПК-блокнотов. №7 Найдите номера моделей и цены всех продуктов (любого типа), выпущенных производителем B (латинская буква). PPS. Ввиду малой сложности задачи - мой (плохой) вариант "влопп" и "абыкак" (в обсуждениях есть варианты поизящнее) select distinct * from( select model, price from pc union all select model, price from laptop union all select model, price from printer )u where model in(select model from product where maker= 'b') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2014, 19:55:53 |
|
||
|
Основы запросов
|
|||
|---|---|---|---|
|
#18+
AllReady, Все просто, волшебные слова — Мартин Грабер Введение в SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2014, 22:34:54 |
|
||
|
Основы запросов
|
|||
|---|---|---|---|
|
#18+
AllReady, Добрый день. AllReadyprice то откуда берет значение, если в таблице product нет этого поля ??? Если повнимательней посмотреть то из таблицы PC. AllReady Код: sql 1. 2. 3. 4. 5. Данный запрос эквивалентен такому: Код: sql 1. 2. 3. 4. 5. Может так будет понятнее. Просто условие из WHERE "переехало" в FROM. Left, Right и Full используются для случаев, когда одно из множеств больше и вас это интересует. К примеру множество ключей PC.model может быть меньше или больше Product.model. Вот тогда и надо использовать Left Right и Full. Используем INNER JOIN для того, что бы не использовать in(select .....), так как через INNER JOIN запрос будет гораздо быстрее работать (на многих СУБД). Надо больше практиковаться и чаше спрашивать. Про очень многие вопросы в книгах не пишут (поэтому не удивительно, что вы и не разобрались в примере). PS. Причины не понимания состоят еще в том, что вы пытаетесь работать на таблицах без ER схемы БД. Там наглядно изображаются связи, далее станет понятно как объединять. С уважением, biwed.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 05:03:18 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38619646&tid=1834952]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 370ms |

| 0 / 0 |
