Не получается сделать выборку из двух таблиц

  • Автор темы oleg_61
  • Дата начала

oleg_61

Guest
Не получается сделать выборку из двух таблиц

Добрый день всем!
Состав сервера:pHP5.0.2 (register globals=off), Apache 1.3.31, WinXP.
Есть 2 табл. в t1 заносится входная инфа, а в t2 выходная (происходит это не одновременно, вначале в t1, а потом d t2), в обеих таблицах есть одинаковое поле (t1.vh_nomer и t2.vh_nomer), т.е. при записи инфы в t2 получается t1.vh_nomer=t2.vh_nomer, а также есть одно поле и в той и в другой таблицах почти дентичное (информация заносимая оденакова) t1.ot_kogo=t2.komu.
Сворганил отчетик из обеих этих таблиц (выводит на экран таблицу с выбранными определенными полями), поиск по полю t1.vh_nomer, и получается такая фишка если инфа есть и в t1.vh_nomer и в t2.vh_nomer отчетик получается, а если в t2.vh_nomer нет такой записи, то и отчет ничего не выдает.
Вопрос: как сделать чтобы отчет выдавался не зависимо от того есть ли соответствие в t2 или нету, т.е. t1.vh_nomer не обязательно должно быть равно t2.vh_nomer. Не знаю доходчиво или нет, но прошу помочь, маюсь ужо неделю:(
 

Кром

Новичок
У тебя проблема в перезаписывании столбца.
При выборке пиши примерно так:
select t1.*, t1.vh_nomer as vh_nomer1, t2.*, t2.vh_nomer as vh_nomer2 и т.д.
И ищи свои номера один в vh_nomer1, а другой в vh_nomer2
 

oleg_61

Guest
Не совсем так, т.е. инфа занесена в t1, потом в форме заполняются различные поля и данные разносятся уже по двум таблицам часть в t1 и остальная нужная часть в t2. Но отчетом же я могу воспользоваться и до того как в t2 попадет t2.vh_nomer и все остальное. ТАк то отчет работает если t1.vh_nomer=t2.vh_nomer, а вот как только t1.vh_nomer<=>t2.vh_nomer, ну нету в t2 соответствия t1, выдает пустой заголовок отчета, я сейчас и с like калдую, хочу организовать поиск по полю ot_kogo (varchar)

-~{}~ 05.05.05 12:26:

Автор оригинала: oleg_61
Не совсем так, т.е. инфа занесена в t1, потом в форме заполняются различные поля и данные разносятся уже по двум таблицам часть в t1 и остальная нужная часть в t2. Но отчетом же я могу воспользоваться и до того как в t2 попадет t2.vh_nomer и все остальное. ТАк то отчет работает если t1.vh_nomer=t2.vh_nomer, а вот как только t1.vh_nomer<=>t2.vh_nomer, ну нету в t2 соответствия t1, выдает пустой заголовок отчета, я сейчас и с like калдую, хочу организовать поиск по полю ot_kogo (varchar)
Решил дописать: вобчем задача сводится к тому, как правильно написать запрос к двум таблицам БД чтобы в отчете отражалась инфа даже при отсутствии во второй таблице соответствующих данных.
 

Кром

Новичок
Для этого тебе нужен запрос типа left join, где в первой таблице все записи, а во второй могут быть не все записи.
[sql]
select * from t1
left join t2
on t1.id = t2.id
where t1.val = 1
[/sql]

-~{}~ 05.05.05 12:19:

Ну и чтобы записи не накладывались делаешь так, как я написал в первом ответе.
 

oleg_61

Guest
Большое спасибо за подсказки. Правда я и сам дергался с этим left join но сейчас получилось, даже получилось с использованием like.
Попутный вопрос ко всему этому: можно ли в данной конструкции с left join, из второй таблицы выбирать только нужные мне поля, т.е. "from t1 left join t2.vh_nomer, t2.komu, t2.id on ..."
 

Кром

Новичок
>из второй таблицы выбирать только нужные мне поля

Все нужные поля перечисляй после select.
 

oleg_61

Guest
Понял большое спасибо за помощь.
Тему можно закрывать.
 
Сверху