<?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=2471&amp;type=atom" />
	<updated>2012-02-07T15:36:17Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.php-myadmin.ru/viewtopic.php?id=2471</id>
		<entry>
			<title type="html"><![CDATA[Re: Запрос связывающий три таблицы]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18870#p18870" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>kolxoznik1 сказал:</cite><blockquote><p>но если делать навигацию постраничную мне нужен будет 1 запрос</p></blockquote></div><p>Если считать строки сгруппированные по пользователю, то разбить страницы будет не сложно.</p><p>Попробуйте найти в сети скрипт с похожей реализацией и посмотрите его код. Думаю там все будет значительно проще, чем у вас получилось. К сожалению, я не могу помочь.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-02-07T15:36:17Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18870#p18870</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Запрос связывающий три таблицы]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18867#p18867" />
			<content type="html"><![CDATA[<p>альтернатива если я правильно понимаю есть, у меян есть страница где выводятся фавориты пользователя, на другой изображения пользователя, они работают, запросы к ним есть. По идеи осталось взять эти 2 запроса и вывести на страницу - активность, но если делать навигацию постраничную мне нужен будет 1 запрос&nbsp; <img src="https://forum.php-myadmin.ru/img/smilies/neutral.png" width="15" height="15" alt="neutral" />&nbsp; все равно какой то тупик. Хотя даже если получится запрос такой сделать, лучше чем сейчас думаю нельзя , а при таком варианте при выводе данные дублироваться будут или покрайней мере хтмл блоки что будут в foreach . Просто вот интересно как на многих сайтах данный функционал делают, хочется услышать совет человека кто может такое делал уже <img src="https://forum.php-myadmin.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2012-02-07T13:01:11Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18867#p18867</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Запрос связывающий три таблицы]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18865#p18865" />
			<content type="html"><![CDATA[<p>Могу только посоветовать в phpMyAdmin перед SELECT поставить EXPLAIN, чтобы посмотреть что стоит MySQL такой запрос.<br /><a href="http://dev.mysql.com/doc/refman/5.5/en/explain-output.html">http://dev.mysql.com/doc/refman/5.5/en/ … utput.html</a></p><p>Попробуйте сделать альтернативу на обычных запросах.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-02-07T12:37:30Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18865#p18865</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Запрос связывающий три таблицы]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18859#p18859" />
			<content type="html"><![CDATA[<p>Столкнулся с такой вот проблемой, до этого не выводил разное содержимое на одну страницу с разнымы хтмл блоками.<br />Вот решил создать страничку с пользовательской деятельностью и вывести все в таком виде :</p><p>такое используют многие сайты, тоесть выводя данные может быть </p><p>А<br />А<br />А<br />Б </p><p>или </p><p>А<br />Б</p><p>Все зависит от колличества записей в таблице. </p><p>Я решил связать данные таблицы :</p><p><strong>users</strong><br />id<br />username</p><p><strong>images</strong><br />id<br />user_id<br />image<br />description<br />date</p><p><strong>user_favorites</strong><br />id<br />user_id <br />image_id <br />date</p><p>и получил такой вот запрос :<br /></p><div class="codebox"><pre><code>        $sql = &quot;SELECT 
                    u.username as user, 
                    p.image as user_image, 
                    i.image as uploaded_image, 
                    i.id as image_id, 
                    i.description as text, 
                    UNIX_TIMESTAMP(i.date) as image_date, 
                    COALESCE ( imgcount.cnt, 0 ) as comments,
                    fav.id as favorite_id,
                    r.image as favorited_image,
                    u2.username as favorite_user,
                    t.image as favorite_user_image                                                            
                FROM users u
                LEFT JOIN images i ON i.user_id = u.id
                LEFT JOIN images p ON p.id = (SELECT b.id FROM images AS b where u.id = b.user_id ORDER BY b.id DESC LIMIT 1)
                LEFT JOIN (SELECT image_id, COUNT(*) as cnt FROM commentaries GROUP BY image_id  ) imgcount ON i.id = imgcount.image_id
                
                LEFT JOIN user_favorites fav ON fav.user_id = u.id                
                LEFT JOIN images r ON r.id = fav.image_id
                LEFT JOIN users u2 ON u2.id = r.user_id                                
                LEFT JOIN images t ON t.id = (SELECT b.id FROM images AS b where u2.id = b.user_id ORDER BY b.id DESC LIMIT 1)                                                                
                
                WHERE i.user_id = ?
                &quot;;</code></pre></div><p>и он выводит :</p><div class="codebox"><pre><code>    [everything_list] =&gt; Array
        (
            [0] =&gt; Array
                (
                    [user] =&gt; 8888
                    [user_image] =&gt; http://127.0.0.1/auth_system_1/upload_images/24/24_0j1kjjzdv3ez07a0ee4lnmjb7_163.jpeg
                    [uploaded_image] =&gt; http://127.0.0.1/auth_system_1/upload_images/224/224_0j1kjjzdv3ez07a0ee4lnmjb7_163.jpeg
                    [image_id] =&gt; 4
                    [text] =&gt; 
                    [image_date] =&gt; 1328577934
                    [comments] =&gt; 0
                    [favorite_id] =&gt; 2
                    [favorited_image] =&gt; http://127.0.0.1/auth_system_1/upload_images/100/100_0j1kjjzdv3ez07a0ee4lnmjb7_163.jpeg
                    [favorite_user] =&gt; 8888
                    [favorite_user_image] =&gt; http://127.0.0.1/auth_system_1/upload_images/24/24_0j1kjjzdv3ez07a0ee4lnmjb7_163.jpeg
                )

            [1] =&gt; Array
                (
                    [user] =&gt; 8888
                    [user_image] =&gt; http://127.0.0.1/auth_system_1/upload_images/24/24_0j1kjjzdv3ez07a0ee4lnmjb7_163.jpeg
                    [uploaded_image] =&gt; http://127.0.0.1/auth_system_1/upload_images/224/224_0j1kjjzdv3ez07a0ee4lnmjb7_163.jpeg
                    [image_id] =&gt; 4
                    [text] =&gt; 
                    [image_date] =&gt; 1328577934
                    [comments] =&gt; 0
                    [favorite_id] =&gt; 5
                    [favorited_image] =&gt; http://127.0.0.1/auth_system_1/upload_images/100/100_flw3utn9igiqh7dtt2o61ydf8_174.jpeg
                    [favorite_user] =&gt; 6666
                    [favorite_user_image] =&gt; http://127.0.0.1/auth_system_1/upload_images/24/24_flw3utn9igiqh7dtt2o61ydf8_174.jpeg
                )

        )</code></pre></div><p>У меня в таблицах храниться 1 изображение и 2 фаворита для данного пользователя, из результата видно что выведено 2 фаворита и 2 картинки (картинка дублируется на количество выведеных строк из бд)</p><p>Далее выводя через foreach в html выводится тоже блоки на колличеству строк. </p><p>Вот решил спросить на правильном ли я пути делая данную страницу активности использовать 1 запрос ?<br />Возможно ли будет добиться результата вывода &quot;фаворитов&quot; и &quot;изображений&quot; и отобрать в виде &quot;Ф&quot;, &quot;И&quot; , &quot;Ф&quot; не дублируя хтмл блоки?</p><p>Просто не зная до конца как сделать я еще сомневаюсь на правильном ли я пути ? <img src="https://forum.php-myadmin.ru/img/smilies/hmm.png" width="15" height="15" alt="hmm" /></p>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2012-02-07T11:38:04Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18859#p18859</id>
		</entry>
</feed>
