Forum Webscript.Ru

Общие => Базы данных => Тема начата: DartSidius от 04 Февраля 2006, 18:02:28

Название: MYSQL
Отправлено: DartSidius от 04 Февраля 2006, 18:02:28
Есть 2 таблицы в mysql...

содержание (условно)

первая:
table1
id_1,name_1

вторая:
table2
id_2,parent_2,name_2

суть я вывожу списки с первой таблицы, но при этом мне надо привязать к первой, вторую таблицу...я это делаю так

SELECT table1.*,table2.* FROM table1,table2 WHERE table2.parent=table1.id

но записи во второй таблице может и небыть...т.е. если её не будет, то записть из первой таблицы не выведется, по понятным причинам...можно в sql в запросе использовать логику, типа if?...или ещё какие-нибудь средства, чтобы сначала проверить существование записи во второй таблице, которая относится к первой?
Название: MYSQL
Отправлено: for_i_0 от 06 Февраля 2006, 09:36:33
DartSidius
Синтаксис оператора UNION (http://www.mysql.ru/docs/man/UNION.html)

Цитировать
DartSidius:
можно в sql в запросе использовать логику, типа if?...

можно.
Название: MYSQL
Отправлено: DartSidius от 06 Февраля 2006, 10:38:18
for_i_0

и как?
Название: MYSQL
Отправлено: for_i_0 от 06 Февраля 2006, 10:56:16
DartSidius
а ссылка приведенная выше тебя ни на какую мысль не навела ?

Цитировать
DartSidius:
и как?

SELECT if (условие, true, false) ...
Название: MYSQL
Отправлено: DartSidius от 06 Февраля 2006, 11:06:05
а т.е.

if(table2.parent=table1.id,table2.parent=table1.id) ?...если на false не надо обрабатывать?
Название: MYSQL
Отправлено: Меняздесьдавнонет от 06 Февраля 2006, 13:17:51
Цитировать
DartSidius:
но записи во второй таблице может и небыть...т.е. если её не будет, то записть из первой таблицы не выведется,

для таких запросов служит LEFT JOIN
Название: MYSQL
Отправлено: DartSidius от 06 Февраля 2006, 13:25:39
RomikChef

а как пользоваться...можно пример?
Название: MYSQL
Отправлено: DartSidius от 06 Февраля 2006, 13:41:54
RomikChef

спасибо...с left join сам разобрался...теперь возник другой вопрос

получается я соединяю 2 таблицы...продположем что в этих таблицах есть одинаковое поле comment...но содержит разную инфу...обрабатываю я потом разпрос так while (my $db_ln = $query->fetchrow_hashref()) {}

т.е. по идее чтобы отобразить поле, мне потребуется ввести $db_ln->{\'comment\'}...но их 2 и они не отобразятся естественно...как это обойти?...причем менять структуру нельзя таблиц, т.е. переименовывать
Название: MYSQL
Отправлено: Меняздесьдавнонет от 06 Февраля 2006, 15:24:20
select t2.comment as comment2, ...