Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / select plz / 13 сообщений из 13, страница 1 из 1
18.06.2005, 13:04
    #33123071
wolk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
что-то голова не думает ))
помогите решить задачку:
tab1
g_id g_name g_test

tab2
f_id g_id f_name

нужно сделать выборку типа:
select tab2.*, tab1.g_name from tab1, tab2 where tab2.g_id='$znachenie' and tab1.g_id='$znachenie'
так вот когда в tab2 есть запись с tab2.g_id=tab1.g_id, то все ок, в противном случае ничего не возвращается, а мне нужно, чтоб и при отсутствии записи в tab2 для определенного tab1.g_id возвращалось значение tab1.g_name.
Желательно без вложенных запросов.
---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
18.06.2005, 13:14
    #33123073
wolk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
забыл еще, что нужно просчитать в запросе count(tab2.f_id)
---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
19.06.2005, 15:53
    #33123570
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
Читай доки по видам соединений таблиц. Там и найдёшь ответ.
...
Рейтинг: 0 / 0
20.06.2005, 21:52
    #33125550
wolk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
я в курсе того, что читать нужно.
по делу есть что-нибудь или так треп только.
...
Рейтинг: 0 / 0
21.06.2005, 01:49
    #33125665
trijin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
Обычное внешнее соединение.
Код: plaintext
1.
2.
3.
SELECT tab2.*, tab1.g_name 
FROM tab1 LEFT OUTER JOIN tab2 ON tab1.g_id=tab2.g_id 
WHERE tab1.g_id='$znachenie'
Вот и все. и надеюсь это только заготовка для запроса =))
------------------
Чем меньше букв, тем ёмче слово
...
Рейтинг: 0 / 0
21.06.2005, 11:08
    #33126186
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
wolkя в курсе того, что читать нужно.
по делу есть что-нибудь или так треп только.

Если в курсе, то читай.
Свою халявную и ламерную сущность лучше не показывать, это нигде не любят.
Впрочем trijin нравится, видимо, отвечать таким перцам
...
Рейтинг: 0 / 0
21.06.2005, 11:32
    #33126262
trijin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
JohnmenВпрочем trijin нравится, видимо, отвечать таким перцам
а просто от работы немного отдыхаю. проще такие чем те которые я +)
...
Рейтинг: 0 / 0
23.06.2005, 17:52
    #33131993
wolk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
Johnmen wolkя в курсе того, что читать нужно.
по делу есть что-нибудь или так треп только.

Если в курсе, то читай.
Свою халявную и ламерную сущность лучше не показывать, это нигде не любят.
Впрочем trijin нравится, видимо, отвечать таким перцам

вообще-то trijin ответил не совсем в тему, недочитал наверное.
речь идет о следующем:

tab1
g_id g_name
1 g1
2 g2
3 g3

tab2
f_id g_id
1 1
2 1
3 1
4 2
5 1

нужно одним запросом достать tab2.*, tab1.g_name, count(tab2.f_id) для любого заданного g_id + желательна работоспособность запроса если в tab2 нет ни одной записи для заданного g_id
to johnmen: покажи свою "не" ламерную сущность.
...
Рейтинг: 0 / 0
23.06.2005, 17:53
    #33131995
wolk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
trijinОбычное внешнее соединение.
Код: plaintext
1.
2.
3.
SELECT tab2.*, tab1.g_name 
FROM tab1 LEFT OUTER JOIN tab2 ON tab1.g_id=tab2.g_id 
WHERE tab1.g_id='$znachenie'
Вот и все. и надеюсь это только заготовка для запроса =))
------------------
Чем меньше букв, тем ёмче слово

и чем это отличается от того, что было написано в самом начале??
...
Рейтинг: 0 / 0
24.06.2005, 02:18
    #33132407
trijin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
wolk
и чем это отличается от того, что было написано в самом начале??

А отличается он тем как раз что выводит g_name даже если нету tab2.g_id=tab1.g_id
По поводу COUNT - хотелось бы уточнить .. если тебе в списке нужны все f_id сами значения, и количество этих значений, то это подзапросом. Если нужно только их количество то.
Код: plaintext
1.
2.
3.
4.
SELECT tab2.*, tab1.g_name, count(tab2.f_id) as cnt
FROM tab1 LEFT OUTER JOIN tab2 ON tab1.g_id=tab2.g_id 
WHERE tab1.g_id='$zna4enie'
GROUP BY (tab1.g_id)
при $zna4enie=3 (по твоим тестовым таблицам) cnt = 0
...
Рейтинг: 0 / 0
25.06.2005, 15:30
    #33134780
wolk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
т.е. проблема решаема только вложенным запросом. жаль.
спасибо за помощь
---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
25.06.2005, 17:50
    #33134880
JackS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
wolkт.е. проблема решаема только вложенным запросом. жаль.
спасибо за помощь
---------
С уважением!


то ли лыжи не едут то ли я не вижу вложенных запросов :)
...
Рейтинг: 0 / 0
26.06.2005, 02:05
    #33135102
trijin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select plz
JackSто ли лыжи не едут то ли я не вижу вложенных запросов :)
прочитай выше мой пост - там мой ответ... и не в самом запросе +)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / select plz / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]