Foros del Web » Programando para Internet » PHP »

Seleccionar registros únicos en tabla

Estas en el tema de Seleccionar registros únicos en tabla en el foro de PHP en Foros del Web. Hola foreros, necesito hacer un select que me muestre unos registros y estos deben ser únicos, es decir que no sean repetidos. Ya sé que ...
  #1 (permalink)  
Antiguo 27/08/2012, 18:59
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 10 meses
Puntos: 14
Seleccionar registros únicos en tabla

Hola foreros, necesito hacer un select que me muestre unos registros y estos deben ser únicos, es decir que no sean repetidos. Ya sé que para ello se suele usar el DISTINCT así:

Código PHP:
$buscade=mysql_query("SELECT DISTINCT id FROM tabla WHERE 1='".mysql_real_escape_string($1)."' "); 
Pero en este caso solo me seleccionaría el ID y lo que quiero es que seleccione todo lo que haya en la tabla con la condición de que solamente el ID sea distinto, los otros campos pueden ser repetidos. Quizás sea un problema sencillo pero he estado buscando información y siempre encuentro los mismos ejemplos en los que solo selecciona un dato y yo los necesito todos. Muchas gracias por adelantado.
  #2 (permalink)  
Antiguo 27/08/2012, 23:04
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: Seleccionar registros únicos en tabla

creo no estoy seguro

Código MySQL:
Ver original
  1. SELECT DISTINCT (id), campo1, campo2, campo3 FROM tabla WHERE 1 =

aunque esta raro hacer un DISTINCT por id, se supone que el id es unico.
  #3 (permalink)  
Antiguo 28/08/2012, 09:37
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 10 meses
Puntos: 14
Respuesta: Seleccionar registros únicos en tabla

Al final he conseguido solucionar el problema del DISTINCT pero ahora tengo un problema de lógica y no logro resolverlo, lo expongo:

Tengo una seccion de mensajes, y una tabla para ello con 4 campos : id, dequien, paraquien, mensaje y fecha

id: id autoincrementable de los mensajes

dequien: el id del usuario que envia el mensaje

paraquien: el id del usuario que recibe el mensaje

mensaje: contenido del mensaje

fecha: la fecha del envío

Bien, ahora lo que necesito es listar los mensajes en una página pero quiero hacerlo como facebook, es decir que te muestra los nombres con los que has tenido conversacion alguna vez.

El problema que he tenido es que me lista los nombres pero dos veces, es decir me sale repetido ya que ambos usuarios han hablado y eso significa que ambos han estado alguna vez en el campo : dequien


Alguien puede iluminarme un poco? Muchas gracias por adelantado FDW!
  #4 (permalink)  
Antiguo 28/08/2012, 10:13
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: Seleccionar registros únicos en tabla

y gracias a los usurios que son los que hacen foros del web. utiliza
Código MySQL:
Ver original
  1. GROUP BY nombre
o incluso
Código MySQL:
Ver original
  1. DISTINCT nombre
creo que ambos pueden funcionar.
  #5 (permalink)  
Antiguo 28/08/2012, 11:31
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 10 meses
Puntos: 14
Respuesta: Seleccionar registros únicos en tabla

Cita:
Iniciado por memoadian Ver Mensaje
y gracias a los usurios que son los que hacen foros del web. utiliza
Código MySQL:
Ver original
  1. GROUP BY nombre
o incluso
Código MySQL:
Ver original
  1. DISTINCT nombre
creo que ambos pueden funcionar.
Ya he arreglado lo del DISTINCT ahora tengo el problema que he mencionado anteriormente...

Pongo el código que estoy usando por si alguien ve el fallo:

Código PHP:
            <div id="previa">
                        <?php
$amigoscole
=mysql_query("SELECT DISTINCT dequien, paraquien FROM mensajes WHERE dequien = '".mysql_real_escape_string($idsesion)."' OR paraquien = '".mysql_real_escape_string($idsesion)."' ORDER BY fecha DESC");
  while(
$seleccmysql_fetch_array($amigoscole)){
    
   
$de=$selecc["dequien"];
   
$para=$selecc["paraquien"];
   
      if(
$de==$idsesion){
    
          
        
$buscapara=mysql_query("SELECT * FROM registrados WHERE id='".mysql_real_escape_string($para)."'",$conexion);
        
$fetchpara=mysql_fetch_array($buscapara);
        
        
$nombrepara=$fetchpara["nombre"];
        
$apellidospara=$fetchpara["apellidos"];
        
$idpara=$fetchpara["id"];
        
?>
     
            <ul>

        
    
   
<li class="lista1">
<a href="perfil.php?id=<?php echo $idpara;?>"><?php echo $nombrepara;?> <?php echo $apellidospara?></a>
</li>
</ul>
        
   <?php
    
}
   
if(
$para==$idsesion){
        
$buscade=mysql_query("SELECT * FROM registrados WHERE id='".mysql_real_escape_string($de)."'");
        
$fetchde=mysql_fetch_array($buscade);
        
          
$nombrede=$fetchde["nombre"];
        
$apellidosde=$fetchde["apellidos"];
        
$idde=$fetchde["id"];
    
?>
      
      <ul>
<li class="lista2">
<a href="perfil.php?id=<?php echo $idde;?>"></?php><?php echo $nombrede;?> <?php echo $apellidosde?></a>
</li>

      </ul>
              <?php 
}}

?>
         </div>

Última edición por ananda; 28/08/2012 a las 11:56
  #6 (permalink)  
Antiguo 28/08/2012, 12:32
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 18 años, 6 meses
Puntos: 58
Respuesta: Seleccionar registros únicos en tabla

Es que se inserta los mensajes que se envían dos veces? Es decir, si yo te mando un mensaje se inserta una vez como que yo lo he enviado y tu lo has recibido y otra como que tu has recibido lo que yo te he enviado?
  #7 (permalink)  
Antiguo 28/08/2012, 13:01
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 10 meses
Puntos: 14
Respuesta: Seleccionar registros únicos en tabla

No, se inserta solamente una vez, si tu lo mandas se inserta como 'dequien' = tu id y 'paraquien = mi id. Entonces cuando yo contesto se inserta otro mensaje al reves, como yo el que lo envía y es por eso que en la lista se me muestran dos veces los nombres, porque han contestado, y lo que quiero es que solo se muestre una vez.
  #8 (permalink)  
Antiguo 29/08/2012, 13:57
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 10 meses
Puntos: 14
Disculpadme el doble post pero necesito alguien que me pueda ayudar ya que llevo toda la tarde intentandolo y aun no lo he conseguido :/

Etiquetas: registro, registros, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:12.