<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум PHP-MyAdmin.RU &mdash; Вывод имени пользователя по его ID]]></title>
	<link rel="self" href="https://forum.php-myadmin.ru/extern.php?action=feed&amp;tid=2449&amp;type=atom" />
	<updated>2012-01-24T15:12:40Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.php-myadmin.ru/viewtopic.php?id=2449</id>
		<entry>
			<title type="html"><![CDATA[Re: Вывод имени пользователя по его ID]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18672#p18672" />
			<content type="html"><![CDATA[<p>Я уже запутался, но попробуйте добавить условие группировки.<br /></p><div class="codebox"><pre><code>GROUP BY f.follow_id, f.user_id</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-01-24T15:12:40Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18672#p18672</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вывод имени пользователя по его ID]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18667#p18667" />
			<content type="html"><![CDATA[<p>Я вот решил догнать запрос до победного и решил добавить вывод друзей моих друзей , но столкнулся с маленькой проблемой. </p><p>вот что у меня есть в базе сейчас</p><p><span class="postimg"><img src="http://s018.radikal.ru/i513/1201/ea/e3f08667dd7b.jpg" alt="http://s018.radikal.ru/i513/1201/ea/e3f08667dd7b.jpg" /></span></p><p>Я пользователь с ID 3 </p><p>у меня в друзьях : 7,6,8<br />а у моего друга 6 как и у меня друг 7</p><p>должно вывести их всех, а у меня массив где мой друг = 7 замещается на 6 = 7</p><div class="codebox"><pre><code>Array
(
    [0] =&gt; Array
        (
            [user_id] =&gt; 6
            [follow_id] =&gt; the_last.jpg
            [follow_username] =&gt; 7
            [follow_date] =&gt; 2012-01-24 16:27:35
            [follow_image] =&gt; second.jpg
        )

    [1] =&gt; Array
        (
            [user_id] =&gt; 3
            [follow_id] =&gt; ax46l7v7vugnesk10whk_339.jpg
            [follow_username] =&gt; 8
            [follow_date] =&gt; 2012-01-24 16:15:18
            [follow_image] =&gt; fsfsf
        )

    [2] =&gt; Array
        (
            [user_id] =&gt; 3
            [follow_id] =&gt; ax46l7v7vugnesk10whk_339.jpg
            [follow_username] =&gt; 6
            [follow_date] =&gt; 2012-01-24 16:09:22
            [follow_image] =&gt; the_last.jpg
        )

)</code></pre></div><p>как видно не хватает массива</p><div class="codebox"><pre><code>        (
            [user_id] =&gt; 3  &lt;&lt;&lt;&lt;---- мой id
            [follow_id] =&gt; the_last.jpg
            [follow_username] =&gt; 7 &lt;&lt;&lt;&lt; --- мой друг
            [follow_date] =&gt; 2012-01-24 16:27:35
            [follow_image] =&gt; second.jpg
        )</code></pre></div><p>Если мой друг дружит не смоими друзьями (к примуру с ID = 1) то запрос работает как нужно !<br />Проблема только если у нас друзья одинаковые, начинает происходить замена...</p><p>вот запрос :</p><div class="codebox"><pre><code>$sql = &quot;SELECT u2.id AS user_id, p.image as follow_id, u.id AS follow_username, f.date AS follow_date, i.image as follow_image
        FROM users AS u
        INNER JOIN (user_follow AS f, users AS u2) on (u.id = f.follow_id AND f.user_id = u2.id) 
        LEFT OUTER JOIN images i on i.id = (SELECT b.id FROM images AS b where f.follow_id = b.user_id ORDER BY b.id DESC LIMIT 1)
        LEFT OUTER JOIN images p on p.id = (SELECT b.id FROM images AS b where f.user_id = b.user_id ORDER BY b.id DESC LIMIT 1)
        WHERE f.user_id = 3 OR f.user_id IN (
                                            SELECT f2.follow_id
                                            FROM user_follow f2
                                            where f2.user_id = 3
                                            )
        GROUP BY f.follow_id
        ORDER BY f.date DESC&quot;;</code></pre></div><p>Буду крайне признателен за помощь&nbsp; <img src="https://forum.php-myadmin.ru/img/smilies/neutral.png" width="15" height="15" alt="neutral" /></p>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2012-01-24T14:35:06Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18667#p18667</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вывод имени пользователя по его ID]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18660#p18660" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>kolxoznik1 сказал:</cite><blockquote><p>Интересно а есть вариант более проще без такого сильного заморачивания ?</p></blockquote></div><p>Запросом думаю нет. В некоторых случаях два запроса в скрипте сделать проще и эффективнее, чем пытаться сводить все в одном.</p>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-01-24T09:31:06Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18660#p18660</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вывод имени пользователя по его ID]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18656#p18656" />
			<content type="html"><![CDATA[<p>Ночью интересные вещи можно сделать&nbsp; <img src="https://forum.php-myadmin.ru/img/smilies/smile.png" width="15" height="15" alt="smile" />&nbsp; вот собственно сделал ORDER BY id DESC в LEFT OUTER JOIN</p><div class="codebox"><pre><code>LEFT OUTER JOIN images i on i.id 
= (SELECT b.id FROM images AS b where f.follow_id = b.user_id ORDER BY b.id DESC LIMIT 1)</code></pre></div><p>выводит последнее изображение пользователя. </p><p>Интересно а есть вариант более проще без такого сильного заморачивания ?</p>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2012-01-24T01:31:06Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18656#p18656</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вывод имени пользователя по его ID]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18655#p18655" />
			<content type="html"><![CDATA[<p>Запрос работает сейчас хорошо, за исключение не выводит последнию фотографию пользователя, а берет 1 ввхождение.</p><p>вот что у меня в бд сейчас сидит :</p><p>id =&gt; 5, user_id =&gt; 3, image =&gt; 1_test.jpg<br />id =&gt; 6, user_id =&gt; 3, image =&gt; 2_test.jpg</p><p>Сейчас выводится id=&gt;5 . Подскажите существует ли возможность сделать </p><div class="codebox"><pre><code>ORDER BY id DESC</code></pre></div><p> в </p><div class="codebox"><pre><code>LEFT OUTER JOIN images i on f.follow_id = i.user_id</code></pre></div><p>раз выводит первую фото вхождения user_id поменять ему порядок что бы на 1 позиции стал последний (наибольший) ид с нужной последней фотографией</p>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2012-01-24T00:35:32Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18655#p18655</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вывод имени пользователя по его ID]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18652#p18652" />
			<content type="html"><![CDATA[<p>Попробуйте так:<br /></p><div class="codebox"><pre><code>$sql = &quot;SELECT `u`.`username` AS `username1`, `u2`.`username` AS `username2`, i.image, i.date, i.id
FROM `users` AS `u`
      INNER JOIN (`user_follow` AS `f`, `users` AS `u2`) on (`u`.`id` = `f`.`follow_id` AND `f`.`user_id` = `u2`.`id`)
      LEFT OUTER JOIN images i on f.follow_id = i.user_id
      WHERE
      `f`.`user_id` = 3
GROUP BY `f`.`follow_id`&quot;;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-01-23T20:47:50Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18652#p18652</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вывод имени пользователя по его ID]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18650#p18650" />
			<content type="html"><![CDATA[<p>Спасибо ! Я решил продолжить модификацию данного запроса и вывести как раннее говорил, своих друзей с фотографией (последней) или пустой массив скажем [&#039;image&#039;] =&gt;</p><p>Я добавил в ваш запрос </p><p>(добваление картинки если существует, в противном случае null)</p><div class="codebox"><pre><code>LEFT OUTER JOIN images i on f.follow_id = i.user_id</code></pre></div><br /><br /><p>полный вид запроса:<br /></p><div class="codebox"><pre><code>$sql = &quot;SELECT `u`.`username` AS `username1`, `u2`.`username` AS `username2`, i.image, i.date, i.id
FROM `users` AS `u`
      INNER JOIN (`user_follow` AS `f`, `users` AS `u2`) on (`u`.`id` = `f`.`follow_id` AND `f`.`user_id` = `u2`.`id`)
      LEFT OUTER JOIN images i on f.follow_id = i.user_id
      WHERE
      `f`.`user_id` = 3&quot;;</code></pre></div><p>и вот что мне выдает :<br /></p><div class="codebox"><pre><code>    [0] =&gt; Array
        (
            [username1] =&gt; 6666
            [username2] =&gt; 3333
            [image] =&gt; test_one_more.jpg
            [date] =&gt; 2012-01-23 21:15:27
            [id] =&gt; 11
        )

    [1] =&gt; Array
        (
            [username1] =&gt; 6666
            [username2] =&gt; 3333
            [image] =&gt; my.test2.jpg
            [date] =&gt; 2012-01-23 20:49:29
            [id] =&gt; 9
        )

    [2] =&gt; Array
        (
            [username1] =&gt; 6666
            [username2] =&gt; 3333
            [image] =&gt; test3.jpg
            [date] =&gt; 2012-01-23 20:50:28
            [id] =&gt; 10
        )</code></pre></div><p>Проблема в том что если пользователь имеет одну фото или не имеет вообще запрос работает <span class="bbu">идеально</span>, а если несколько то выводит все фото друга, дублируя его иям. Из данного примера видно что скрипт должен вывести только </p><div class="codebox"><pre><code>    [0] =&gt; Array
        (
            [username1] =&gt; 6666
            [username2] =&gt; 3333
            [image] =&gt; test_one_more.jpg
            [date] =&gt; 2012-01-23 21:15:27
            [id] =&gt; 11
        )</code></pre></div><p>так как изображение было самое последнее у этого пользователя (видно по id и дате (время добавления))</p><p>Я считаю проблема здесь f.follow_id = i.user_id вывод всех где имя пользователя повторяется, имея 2 фото, у обоих будет одинаковый идентификатор пользователя (user_id) и соответственно выведет 2, вот как сделать что бы 1 ? есть вариант сгрупировать , но что то не выходит, может не так куда то что то пишу ?</p>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2012-01-23T20:24:47Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18650#p18650</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вывод имени пользователя по его ID]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18646#p18646" />
			<content type="html"><![CDATA[<p>Попробуйте так.<br /></p><div class="codebox"><pre><code>$sql = &quot;SELECT `u`.`username` AS `username1`, `u2`.`username` AS `username2`
FROM `users` AS `u`
      INNER JOIN (`user_follow` AS `f`, `users` AS `u2`) on (`u`.`id` = `f`.`follow_id` AND `f`.`user_id` = `u2`.`id`)
      WHERE
      `f`.`user_id` = 3&quot;;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Hanut]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=181</uri>
			</author>
			<updated>2012-01-23T18:01:03Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18646#p18646</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Вывод имени пользователя по его ID]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18644#p18644" />
			<content type="html"><![CDATA[<p>[РЕШЕНИЕ]</p><p>Вроде решил проблему, </p><div class="codebox"><pre><code>$sql = &quot;SELECT fn.username as username1, u.username as username2
FROM
  users u
  INNER JOIN user_follow f on (u.id = f.follow_id)
  JOIN users AS fn ON (f.user_id=fn.id)
WHERE
  f.user_id = 3&quot;;</code></pre></div><p>вот такой получился запрос и выводит что и нужно </p><div class="codebox"><pre><code>   [0] =&gt; Array
        (
            [username1] =&gt; 3333
            [username2] =&gt; 6666
        )</code></pre></div><p>Подскажите может можно как то оптимизировать запрос ?</p>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2012-01-23T17:39:40Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18644#p18644</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Вывод имени пользователя по его ID]]></title>
			<link rel="alternate" href="https://forum.php-myadmin.ru/viewtopic.php?pid=18643#p18643" />
			<content type="html"><![CDATA[<p>Здравствуйте !</p><p>Я имею следующие таблицы</p><p><strong>users</strong><br />id<br />username</p><p><strong>images</strong><br />id<br />user_id<br />image</p><p><strong>user_follow</strong><br />id<br />user_id<br />follow_id</p><p>у меня есть запрос который выводит моих друзей и друзей моих друзей, в роли главной таблицы беру &quot;user_follow&quot; и далее нужно подставить вмето<br />user_id -&gt; username1 пользователя из таблицы Users<br />follow_id -&gt; username2 пользователя из таблицы Users</p><p>На данный момент я имею такой запрос</p><div class="codebox"><pre><code>$sql = &quot;SELECT user_id, follow_id, username FROM users u
      INNER JOIN user_follow f on (u.id = f.follow_id)
      WHERE
      f.user_id = 3&quot;;</code></pre></div><p>и он выводит следующее :</p><div class="codebox"><pre><code>    [0] =&gt; Array
        (
            [user_id] =&gt; 3
            [follow_id] =&gt; 6
            [username] =&gt; 6666
        )</code></pre></div><p>Подскажите что и куда внести (изменения в запрос) что бы вывести<br />[user_id] как [username1] =&gt; &#039;username из таблицы users&#039;<br />[follow_id] как [username2] =&gt; &#039;username из таблицы users&#039; (сейчас выводится как [username] =&gt; &#039; &#039;)</p><p>Я потратил много времени в поиске в интернете и думая сам, решил как последнию надежду поискать на форму про базы данные</p>]]></content>
			<author>
				<name><![CDATA[kolxoznik1]]></name>
				<uri>https://forum.php-myadmin.ru/profile.php?id=3698</uri>
			</author>
			<updated>2012-01-23T17:12:32Z</updated>
			<id>https://forum.php-myadmin.ru/viewtopic.php?pid=18643#p18643</id>
		</entry>
</feed>
