2013-07-05 3 views
1

Почему голосование по вопросу?Возврат одной строки, если значение отображается дважды

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

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

Так что мне нужно сделать здесь, чтобы скрыть одну строку, если письмо дано дважды.

Возможно ли это с некоторыми изменениями в mysql или можно изменить инструкцию с помощью инструкции php if, если да, то как?
LIMIT 1, похоже, не работает в этом запросе.

Приведенный ниже код показывает:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

I хочу, чтобы показать:
[email protected]
[email protected]
[email protected]

С благодарностью
Джим

<?php 
    $user_list = ""; 
     $sql = mysql_query("SELECT * FROM userproducts"); 
     $userCount = mysql_num_rows($sql); 
     if ($userCount > 0){ 
      while($row = mysql_fetch_array($sql)){ 
       $email = $row["user"]; 

       $user_list .= '<table width="300"> 
           <tr> 
            <td>'.$email.'</td> 
           </tr> 
           </table>'; 
      } 
     }else{ 
       $user_list = "We have no users with special prices yet"; 
     } 
?> 
+0

[Distinct] (http://www.w3schools.com/sql/sql_distinct.asp) может помочь вам – Korcholis

+0

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **] (http: //bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). – h2ooooooo

+0

@ h2ooooooo Спасибо, я действительно знаю об этом и учась в данный момент. –

ответ

3

Добавить GROUP BY в запросе

SELECT * FROM userproducts GROUP BY user 

Или использовать DISTINCT для извлечения уникальных пользователей

SELECT DISTINCT(user) FROM userproducts 
+0

GROUP BY с '*' не будет работать, потому что идентификатор будет агрегирован, должен быть 'SELECT user FROM userproducts GROUP BY user' – mirkobrankovic

+0

Спасибо, что это работает, я еще не пробовал DISTINCT, я попробую. Однако Какая разница между двумя? Другие, похоже, предпочитают DISTINCT над GROUP BY. –

+0

@mirkobrankovic Я просто пробовал с *, и он работает для меня, используя GROUP BY. –

Смежные вопросы