SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.02.2010 23:34:05

solenie
Участник
Зарегистрирован: 12.02.2010
Сообщений: 6

Помогите сотворить правильный SELECT

Есть примерно такая таблица:

tel     | IDrabotnika | name | nomerGruppy | boss
---------------------------------------------
0458  | ma121       | Ivan   | 1234           | ma100
---------------------------------------------
0045  | ma100       | Oleg   | 2344           | ma10

Мне нужно в идеале задать ID работника и получить информацию о его имени и о имени его босса.
То есть, желаемый результат такой:

name| boss|
------------
Ivan | Oleg|

Получилось сделать только запрос по ID, и то, по-моему, не очень красивый.

SELECT name FROM table1 WHERE IDrabotnika IN (SELECT boss FROM table1 WHERE name='Ivan');


Спасибо за советы!

Неактивен

 

#2 12.02.2010 23:44:58

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите сотворить правильный SELECT

SELECT a1.name name, a2.name boss FROM table1 a1 JOIN table1 a2 ON a1.boss=a2.IDrabotnika WHERE a1.IDrabotnika = 'известное_вам_значение';

Неактивен

 

#3 12.02.2010 23:54:24

solenie
Участник
Зарегистрирован: 12.02.2010
Сообщений: 6

Re: Помогите сотворить правильный SELECT

Говорит Table 'table1' does not exist sad

Неактивен

 

#4 12.02.2010 23:58:33

solenie
Участник
Зарегистрирован: 12.02.2010
Сообщений: 6

Re: Помогите сотворить правильный SELECT

Простите, таблицу надо было одну и ту же ввести просто, всё получилось, большое спасибо вам!!!

Неактивен

 

#5 13.02.2010 18:04:38

solenie
Участник
Зарегистрирован: 12.02.2010
Сообщений: 6

Re: Помогите сотворить правильный SELECT

Можно еще вопрос?
Попробовала по этому принципу сделать другой SELECT, но почему-то выходит empty set, хотя данные есть.

Таблицы:
tableB:
BID| ...|...|
-----------
b12|....|...|
-----------
b11|....|...|
------------
b10|....|...|
-----------

tableM:
BID|...|....|....|
---------------
b10|...|....|....|
---------------

Если я хочу получить данные, одинаковые в обеих таблицах, то работает такой запрос:

 

select s1.BID, s2.BID from tableB as s1 inner join tableM using(BID) inner join tableB as s2 using(BID) where s1.BID=s2.BID;

Получаю две колонки с BID, которые одинаковы в обеих таблицах.

Но если я задаю запрос наоборот, то есть чтобы получить данные из tableB, которых нет в tableM, то выдаётся только empty set.
Вот мой запрос:
 
select s1.BID, s2.BID from tableB as s1 inner join tableM using(BID) inner join tableB as s2 using(BID) where s1.BID<>s2.BID;

Empty set (0.00 sec)

Что я делаю неправильно?

Неактивен

 

#6 13.02.2010 18:12:53

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите сотворить правильный SELECT

solenie написал:

Если я хочу получить данные, одинаковые в обеих таблицах, то работает такой запрос:

select s1.BID, s2.BID from tableB as s1 inner join tableM s2 using(BID);



solenie написал:

Но если я задаю запрос наоборот, то есть чтобы получить данные из tableB, которых нет в tableM, то выдаётся только empty set.

select s1.BID from tableB as s1 LEFT join tableM s2 using(BID) where s2.BID IS NULL;

Неактивен

 

#7 13.02.2010 18:22:11

solenie
Участник
Зарегистрирован: 12.02.2010
Сообщений: 6

Re: Помогите сотворить правильный SELECT

Получается, только если в конце не s1.BID, a s2.BID ставить.
Но эта вторая колонка с нулями как-то совсем не нужнаsad

Неактивен

 

#8 13.02.2010 18:35:21

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите сотворить правильный SELECT

Да, это я описался.
Уберите s2.BID из списка выбираемых полей wink (см прошлое сообщение - отредактировано)

Неактивен

 

#9 13.02.2010 18:40:57

solenie
Участник
Зарегистрирован: 12.02.2010
Сообщений: 6

Re: Помогите сотворить правильный SELECT

Спасибо вам огромное!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson