<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум PHP-MyAdmin.RU &mdash; Связывание двух таблиц и групировка]]></title>
	<link rel="self" href="https://forum.php-myadmin.ru/extern.php?action=feed&amp;tid=2271&amp;type=atom" />
	<updated>2011-07-12T16:03:46Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.php-myadmin.ru/viewtopic.php?id=2271</id>
		<entry>
			<title type="html"><![CDATA[Re: Связывание двух таблиц и групировка]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16953#p16953" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>kolxoznik1 сказал:</cite><blockquote><p>Рабочий код</p></blockquote></div><p>Очень хорошо. А с маленькими поправками будет еще лучше.<br /></p><div class="codebox"><pre><code>&lt;?php

include(&#039;db.php&#039;);
    
function product($line) {
    if ($result = mysql_query(&#039;SELECT * FROM products_items WHERE products_category = &#039; . $line[&#039;id&#039;]) {
        while ($line = mysql_fetch_array($result)) {
            echo &#039;&lt;div&gt;&lt;img src=&quot;&#039;.$line[&#039;img&#039;].&#039;&quot;&gt;&lt;div&gt;
                &lt;div&gt; &#039;.$line[&#039;description_ru&#039;].&#039; &lt;/div&gt;&#039;;
        }
    }
}
    
if ($result = mysql_query(&quot;SELECT * FROM products_category&quot;) {
    while ($line = mysql_fetch_array($result)) {
        echo &#039;&lt;b&gt;&#039;.$line[&#039;menu_ru&#039;].&#039;&lt;/b&gt;&lt;br&gt;&#039;; 

        product($line);
    }
}

?&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-07-12T16:03:46Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16953#p16953</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Связывание двух таблиц и групировка]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16952#p16952" />
			<content type="html"><![CDATA[<p><span class="bbu">Рабочий код</span></p><p>выкладываю рабочий код, может кому понадобится и кто то заглянет сюда, сам искал больше 4 часов по просторам интернета в поисках запроса, а решил проблему благодоря форуму через функцию&nbsp; <img src="https://forum.php-myadmin.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /> </p><div class="codebox"><pre><code>&lt;?php

include(&#039;db.php&#039;);
    
function product($line) {
    $result = mysql_query(&#039;SELECT * FROM products_items WHERE products_category = &#039; . $line[&#039;id&#039;] . &#039;&#039;) or die(mysql_error());

    while ($line = mysql_fetch_array($result)) {
  
  
    echo &#039;&lt;div&gt;&lt;img src=&quot;&#039;.$line[img].&#039;&quot;&gt;&lt;div&gt;
        &lt;div&gt; &#039;.$line[description_ru].&#039; &lt;/div&gt;&#039;;
 
    }
}
    
$result = mysql_query(&quot;SELECT * FROM products_category&quot;) or die(mysql_error());
    
while ($line = mysql_fetch_array($result)) {
    
echo &#039;&lt;b&gt;&#039;.$line[&#039;menu_ru&#039;].&#039;&lt;/b&gt;&lt;br&gt;&#039;; 

product($line);

}

?&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2011-07-11T22:18:13Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16952#p16952</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Связывание двух таблиц и групировка]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16951#p16951" />
			<content type="html"><![CDATA[<p>Первым запросом выбираем категории. Не надо объединять таблицы, просто выберите категории простейшим запросом.<br /></p><div class="codebox"><pre><code>SELECT * FROM `products_category`</code></pre></div><p>Второй запрос будет тоже простым:<br /></p><div class="codebox"><pre><code>SELECT * FROM `products_items` WHERE `products_category` = 1</code></pre></div><p>Только вместо единички надо подставлять идентификатор категории передаваемый в параметре функции product().</p><p>Добавьте в функции product() цикл while, иначе она не имеет смысла. Я дал не рабочий код, а только пример, который надо довести до рабочего состояния.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-07-11T20:57:35Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16951#p16951</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Связывание двух таблиц и групировка]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16950#p16950" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>хочется получить<br />[название категории]<br />&lt;товар 1&gt;<br />&lt;товар 2&gt;<br />&lt;............&gt;</p></blockquote></div><p>так разве выше предложеный вами код не поможет ?</p><p>по идеи код должен как то так работать</p><div class="codebox"><pre><code>&lt;?php

include(&#039;db.php&#039;);
    
function product($line) {
  $result = mysql_query(&#039;SELECT img, description_ru, products_category FROM products_items WHERE products_category = &#039; . $line[&#039;id&#039;] . &#039;    //   выводим продукты, по конкретной категории, сверяя ID категории с полем товаров products_category
&#039;) or die(mysql_error());

echo &#039;&lt;img src=&quot;&#039;.$line[img].&#039;&quot;&gt;&#039;;
echo $line[description_ru];

}
    
$result = mysql_query(&quot;SELECT products_category.id, products_category.menu_ru FROM products_category &quot;) or die(mysql_error());   // выводим категории, названия и id категории
    
    
while ($line = mysql_fetch_array($result)) {

    
echo $line[&#039;menu_ru&#039;]; 

product($line);

    }

?&gt;</code></pre></div><p>а сделав так </p><div class="codebox"><pre><code>&lt;?php

include(&#039;db.php&#039;);
    
function product($line) {
  $result = mysql_query(&#039;SELECT* FROM products_category WHERE products_category.id = &#039; . $line[&#039;id&#039;] . &#039;
&#039;) or die(mysql_error());

echo &#039;&lt;img src=&quot;&#039;.$line[img].&#039;&quot;&gt;&#039;;
echo $line[description_ru];

}
    
$result = mysql_query(&quot;SELECT * 
                        FROM products_items,products_category 
                        WHERE products_items.products_category=products_category.id&quot;) or die(mysql_error());
    
    
while ($line = mysql_fetch_array($result)) {
    

    
echo $line[&#039;menu_ru&#039;]; 

product($line);


    }

?&gt;</code></pre></div><p>отобрадилось следующее</p><p>1) появились названия категорий только в которые не пустые ...<br />2) отображение :</p><p>Категория А<br />- <span class="bbu">товар А</span><br />Категория А<br />- <span class="bbu">товар Б</span><br />Категория Б<br />- товар М</p><p>а не </p><p>Категория А<br />- товар А<br />- товар Б<br />Категория Б<br />- товар М</p><p>Самое обидное что не вижу даже друго варианта как обойти данную проблему, решив каким нибудь другим способом.</p>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2011-07-11T17:53:55Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16950#p16950</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Связывание двух таблиц и групировка]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16949#p16949" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>kolxoznik1 сказал:</cite><blockquote><p>хочется получить<br />[название категории]<br />&lt;товар 1&gt;<br />&lt;товар 2&gt;<br />&lt;............&gt;</p></blockquote></div><p>Так получить не получится.</p><p>Выбираем категории, затем в функции product() выбираем по категории продукты. Получается выполнение запроса в запросе.<br /></p><div class="codebox"><pre><code>function product($line) {
  $result = mysql_query(&#039;SELECT product... WHERE products_category.id = &#039; . $line[&#039;id&#039;] . &#039;
&#039;) or die(mysql_error());
// и так далее.
}

$result = mysql_query(&quot;SELECT products_items.id, products_items.description_ru, products_items.img, products_category.id, products_category.menu_ru FROM products_items,products_category WHERE products_items.products_category=products_category.id
&quot;) or die(mysql_error());

while ($line = mysql_fetch_array($result)) {
echo $line[&#039;menu_ru&#039;];

product($line);

}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-07-11T16:07:49Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16949#p16949</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Связывание двух таблиц и групировка]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16948#p16948" />
			<content type="html"><![CDATA[<p>у меня в данный момент в таблице вбито по 2 товара (2 стрчоки) на каждую категорию. когда делаю GROUP BY выводит почему то 1 топар с одной категории, а если без групировки то выводит [&lt;название категории&gt;&lt;товар&gt;],[&lt;название категории&gt;&lt;товар&gt;] что не есть правильно, хочется получить </p><p>[название категории]<br />&lt;товар 1&gt;<br />&lt;товар 2&gt;<br />&lt;............&gt;</p><p>[название категории2]<br />&lt;товар 1&gt;<br />&lt;товар 2&gt;</p><p>Немного переделал запрос, так тоже как почитал в интернете можно</p><p>$result = mysql_query(&quot;SELECT products_items.id, products_items.description_ru, products_items.img, products_category.id, products_category.menu_ru FROM products_items,products_category WHERE products_items.products_category=products_category.id<br />&quot;) or die(mysql_error());</p><p>Через php это нужно запрос в запросе? Просто на данный момент я сделал, категории выводятся</p><p>while ($line = mysql_fetch_array($result)) { </p><p>echo $line[menu_ru]; // вывод названий категории, есть еще нюанс , я не могу сделать GET по конструкции (это думаю облегчило бы задачу)</p><p>Здесь надо еще один запрос на вывод товаров?</p><p>}</p>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2011-07-11T14:16:04Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16948#p16948</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Связывание двух таблиц и групировка]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16946#p16946" />
			<content type="html"><![CDATA[<p>Все вы правильно делали, только необходимо добавить группировку таким образом.<br />GROUP BY категория, товар</p><p>В этом случае, категории будут повторяться вместе с названиями товаров.</p><p>Если такой вывод не даст возможности с ним работать, то придется делать иначе, уже через PHP: сперва выбирать запросом категории и затем дополнительным запросом товары для каждой категории.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2011-07-11T13:00:04Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16946#p16946</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Связывание двух таблиц и групировка]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=16944#p16944" />
			<content type="html"><![CDATA[<p>Скажу сразу, начала изучать php/mysql , не ругайте сильно, столкнулся с трдностью вывода категорий и всех пренадлежавших данной категории товаров.</p><p>Есть 2 таблицы:</p><p>1 таблица - для категорий (products_category)</p><p>id (primary key)<br />название категории</p><p>2 таблица - для товаров (products_items)</p><p>id (primary key)<br />products_category (заносится id категории)<br />description<br />img</p><p>Нужен запрос с групировкой по категориям, что бы выводил :<br />Категория 1<br />-товар А<br />-товар Б<br />Категория 2<br />-товар Д<br />Категория 3<br />-товар П<br />-товар В</p><p>Я сделал такой запрос:</p><p>SELECT *<br />&nbsp; &nbsp; &nbsp; &nbsp; FROM products_category<br />&nbsp; &nbsp; &nbsp; &nbsp; JOIN products_items <br />&nbsp; &nbsp; &nbsp; &nbsp; WHERE products_category.id = products_items.products_category</p><p>и он выводит следующие :</p><p>Категория 1<br />-товар А<br />Категория 1<br />-товар Б<br />Категория 2<br />-товар Д<br />Категория 3<br />-товар П<br />Категория 3<br />-товар В</p><p>дублирует категории, я пытался вставить Group by</p>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2011-07-11T12:29:45Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=16944#p16944</id>
		</entry>
</feed>
