|
|
|
| Имеем таблицу:
CREATE TABLE `Manufacturers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
+----+--------------------+
| id | name |
+----+--------------------+
| 1 | CDEF Manufacturing |
| 2 | Dell Ltd |
| 3 | JDF Ltd |
| 4 | Motor inc |
+----+--------------------+
CREATE TABLE `parts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`man_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
+----+-----------------+--------+
| id | name | man_id |
+----+-----------------+--------+
| 1 | DVD burner | 1 |
| 2 | Laptop | 2 |
| 3 | Power supply | 2 |
| 4 | Display adapter | 3 |
| 5 | Network hub | 1 |
| 6 | Sound card | 3 |
+----+-----------------+--------+
необходимо извлечь идентификаторы, имена изготовителей и соответствующих частей для DELL LTD, JDF LTD?
select
p.name,m.name
from
Manufacturers m, parts p
where
1=1
and m.id=p.man_id
Правильно ли написан запрос? | |
|
|
|
|
|
|
|
для: fox2011
(28.02.2012 в 16:42)
| |
SELECT p.name,m.name
FROM parts p
JOIN Manufacturers m
ON m.id=p.man_id
WHERE m.id IN (2,3)
|
запрос будет работать, но с точки зрения оптимальности не скажу
просто надо освежить в памяти нюансы с JOIN а сейчас на это нет времени
а если нормально проектировать таблицы и сделать поля связи с одинаковыми именами,
то будет еще красивее
SELECT p_name,m_name
FROM parts
JOIN Manufacturers
USING(man_id)
WHERE man_id IN (2,3)
|
(можете даже подумать какие поля нужно переименовать, чтобы запрос заработал)
___
зачем вам where 1=1 ? :) | |
|
|
|
|
|
|
|
для: Valick
(28.02.2012 в 17:14)
| | Так, какой из этих запросов более верный?
и ещё помогите пжлста со следующими запросами(с той же таблицей):
- Извлеките имена и идентификаторы изготовителей, составляющие части, которых, не указаны.
SELECT
*
FROM
Manufacturers
WHERE
id NOT IN (SELECT
DISTINCT man_id
FROM parts)
- Измените идентификатор для CDEF, MAnufacturing с 1 на 5 и идентификаторы составляющих частей, которые соответствуют этому изготовителю (одним запросом).
UPDATE
Manufacturers
SET
id = 5
WHERE
id = 1
- Переместите вход JDF Ltd и соответственные составляющие части (одним запросом) | |
|
|
|