MySql - 1:M

Yuriy_S

-=PHP-Club=-
MySql - 1:M

Всем привет.

Можно ли сделать слудующее 1 запросом и вывести:
имеется 2 таблицы. 1 - содержит к примеру идентификаторы чего-нибудь...
2 таблица - несколько сотен записей.....
Делаем связь между этими таблицами в запросе. (Т1 - идентификатор и Т2 - идентификатор_2)
так вот можно ли выводя данные из таблицы 2, вывести из таблицы Т1 только 1 строку а из Т2 все строки, имеющие связь со строкой Т1.ид ?
т.е что-то типа того:
9349 - t1.id
товар1 // t2.other_field
товар2
товар3...
9500
товарN
...
 

MX

Guest
ни чего не понятно.

изложи яснее..что дано и чего конкретно ты хочешь
 

Yuriy_S

-=PHP-Club=-
а подробнее?
я юзаю такой запрос:
$zap=mysql_query("SELECT t1.*, t2.* FROM ip as t1 RIGHT JOIN base as t2 ON t1.i_id=t2.ip WHERE t2.catalog LIKE '$skey%' OR t2.file LIKE '$skey%' GROUP by t2.ip LIMIT $min,$count_str", $connect);
...
 

ONK

Пассивист PHPСluba
SELECT t1.id, t2.*.....

Хотя возможно и я неправильно понял
 

Verk

Guest
Yuriy_S, так ты скажи толком с чем у тебя проблемы, с запросом или выводом результатов ?
 

Yuriy_S

-=PHP-Club=-
хорошо, постараюсь ещё раз объяснить.
Есть 2 таблицы, их мы связываем - таблица1-ИД, Таблица2-ИД_

связываю я так, как написал выше в запросе (RIGHT JOIN).
И собственно вывожу данные из таблицы 2, т.е те, которые имеют идентификатор из таблицы 1.
Нужно вывести все записи из таблицы 2! + для них указать идентификатор (который берем из таблицы 1).
Вывожу я, и выводится идентификтор для каждой строчки.
вот я и хочу сделать так, что бы при выводе выводился 1 идентификатор для группы записей из таблицы 2.
вот графический пример :) :
id1
----данные из таблицы 2// эти данные относятся к id1
----данные
----данные
id2
----данные из Т2 //id2
id2
----данные из Т2
 

Verk

Guest
PHP:
$id_tmp='';

while ($row=.....)	{
	if ($id_tmp!=$row['id1'])	{
		$id_tmp=$row['id1'];
		echo $row['id1'];
	}
// вывод данных 
}
только результат запроса должен быть по id1 отсортирован
 

Yuriy_S

-=PHP-Club=-
Verk, то что ты привел пример, будет выводить последовательно сначала ID таблицы 1, а затем все данные в куче к таблице 2....
->>
id1
----данные из таблицы 2// эти данные относятся к id1
----данные
----данные
id2
----данные из Т2 //id2
id2
----данные из Т2
 

Yuriy_S

-=PHP-Club=-
id1
id2
id3
id4
Данные из Т2
Данные из Т2
Данные из Т2
Данные из Т2
.......
 

Verk

Guest
Ты что-то неправильно списал, покаж-ка кусок кода который это выводит.
 

Demiurg

Guest
только результат запроса должен быть по id1 отсортирован (c) verk
 

Yuriy_S

-=PHP-Club=-
PHP:
 $id_tmp=''; 
 while($row=mysql_fetch_array($zap))
    {
        if ($id_tmp!=$row['i_id'])    {
        $id_tmp=$row['i_id'];
        echo $row['i_id'];
    }
//вывод данных
}
 

Verk

Guest
Дык, вместо

'//вывод данных '

нужно подставить вывод элементов массива $row
 

Yuriy_S

-=PHP-Club=-
Verk, ты меня за идиота считаешь?
как выводить, я тебе могу привести примеров 10-15, меня интересует конкретный вопрос, который был мной поставлен.
Прошу тебя ,если не можешь помочь, то лучше непытайся...

Для тех, кто ещё не совсем понял что я хочу, скажу ещё проще:
Вывести Идентификаторы в качестве заголовков перед данными из таблицы 2.
Verk, тот пример, как я ещё раз говорю, выводит
id1
id2
id3
Здесь текст с ид1
Здесь текст с ид2
Здесь текст с ид3...
 

Yuriy_S

-=PHP-Club=-
$zap=mysql_query("SELECT t1.*, t2.* FROM ip as t1 RIGHT JOIN base as t2 ON t1.i_id=t2.ip WHERE t2.catalog LIKE '%$skey%' OR t2.file LIKE '%$skey%' ORDER by t1.i_id", $con);

точнее вот этот запрос ;)
 

Verk

Guest
PHP:
$id_tmp='';
while($row=mysql_fetch_array($zap))
    {
        if ($id_tmp!=$row['id'])    {
        $id_tmp=$row['id'];
        echo $row['id'];
    }
//вывод данных
}
 
Сверху