Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Выборка из 2-х связанных таблиц


Автор: o.s.a. 27.3.2006, 10:47
Имеем:

Код

1 таблица (table)
id    field
1    текст1
2    текст2

2 таблица (table_trans)
table_id  language      title
1              ru             книга
1              en            book
2              ru             ручка 
2              en            pen


Нужно составить запрос (желательно 1) для выборки из двух таблиц.
Теоретически нужно получить массив вида
Код

[0] =>
     [id] => 1
     [field]  => текст1
     [title] =>
          [ru] =>  книга
          [en] =>  book
[1] =>
     [id] => 2
     [field]  => текст2
     [title] =>
          [ru] =>  ручка
          [en] =>  pen

Автор: awers 27.3.2006, 12:18
что-то типа того:
Код

select 2table.lang,2table.title,2table.tbl_id from `2table` where `table_id` = (select `id` from `1table` where `text` = '$text' limit 1)

Вроде так. Код не проверял....

Совсем забыл. С версии MySQL 4.1 ...

Автор: o.s.a. 27.3.2006, 21:16
awers
1) limit 1 значит, что будет выбрана лишь 1 строка в подзапросе,
а мне нужно получить все, удовлетворяющие условию where в подзапросе smile
2) Можно ли с помошью твоего одного запроса получить не только поля из таблицы 2table
Код

select 2table.lang,2table.title,2table.tbl_id from `2table`

но и все поля из таблицы 1table, для которых выполняется условие в подзапросе?


Автор: o.s.a. 30.3.2006, 19:44
Сделал так:
Код

select table1.*, table2.* from table1, table2 where table1.id=table2.table_id and ...


Получился массив вида
Код

[0] =>
     [id] => 1
     [field]  => текст1
     [title] => книга
     [language] => ru
[1] =>
     [id] => 1
     [field]  => текст1
     [title] => book
     [language] => en
[2] =>
     [id] => 2
     [field]  => текст1
     [title] => ручка
     [language] => ru
[3] =>
     [id] => 2
     [field]  => текст1
     [title] => pen
     [language] => en


Дальше я уже преобразовал данный массив в тот вид, который мне и был нужен

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)