Foros del Web » Programando para Internet » PHP »

ayuda con select pleasee

Estas en el tema de ayuda con select pleasee en el foro de PHP en Foros del Web. Hola a todos , tengo el siguiente select $sql = mysql_query("SELECT campos.*,camposrev.* FROM campos LEFT JOIN camposrev on campos.id=camposrev.idpropietario group by id "); programname while ...
  #1 (permalink)  
Antiguo 08/08/2009, 11:41
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
ayuda con select pleasee

Hola a todos , tengo el siguiente select

$sql = mysql_query("SELECT campos.*,camposrev.* FROM campos LEFT JOIN camposrev on campos.id=camposrev.idpropietario group by id "); programname
while ($row=mysql_fetch_array($sql)){
echo $row['id'];
echo $row['propietario'];
echo $row['localidad'];
echo "</br/>";
}

el problema que tengo es que la tabla camposrev tiene mas de 1 id de la tabla campos osea es una relacion de 1 a muchos, y la idea mia es que lo que imprima sea la ultima opcion que tuvo osea que la tabla camposrev este ordenada DESC , pero asi como lo tengo yo me imprime la primera opcion en ves de la ultima a agruparlos.
para que se entienda mejor.
yo tengo en tabla campos
id 1 perez
id 2 juan , ellos son unicos, osea tienen 1 id unico cada uno, ahora en camposrev tengo el id de campos y la localidad por ej
si perez tiene 2 localidades quedaria
idpro 1 localidad flores
idpro 1 localidad mar del plata

y mi idea es motrar en este caso mar del plata para la id1 y siempre me muestra la que esta mas arriba osea flores.

Como puedo hacer para que me muestre la ultima opcion insertada para la id del propietario?

espero que se haya entendido.

saludos.
  #2 (permalink)  
Antiguo 08/08/2009, 11:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ayuda con select pleasee

¿ID es una columna declara como INT?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 08/08/2009, 12:00
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: ayuda con select pleasee

si es un int 11 que es autoincremental esto en la tabla campos en la camposrev que seria donde se repite este id tambien pero con esa condifcion que se repite justamente para ir cambiando la localidad , el año , etc

osea yo tengo en la tabla camposrev

id localidad periodo
1 buenos aires 2008
1 catamarca 2009
2 flores 2008
1 Cordoba 2010

y asi , el id ese lo junto con el de la tabla campos que ahi estarian los apellidos de las personas con sus id.

y mi idea es hacer la select de tal forma que en este ej si busco el id 1
me de como resultada
que la localidad es CORDOBA al ser la ultima insertada ( y periodo mayor)

gracias.
  #4 (permalink)  
Antiguo 08/08/2009, 12:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ayuda con select pleasee

Necesitas en esa tabla crear otro id incrementado y buscarlo por ese ID te sugiero que el id que colocaste en camposrev le cambies el nombre por ejemplo id_campos y coloques un id que sea unico y autoincrementado, con eso podras hacer el desc
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 08/08/2009, 13:09
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: ayuda con select pleasee

pero si agrego otro id por ej

id(agrgado) idprop id2
1 1 1
2 1 2
3 1 3
4 2 1
5 3 1
6 1 4

como hago para que me de como resultado los ultimos(mayor) id2 que tiene cada idprop?
porque la idea es que tire el utlimo de cada idprop.
osea si busco ahi me tendria que dar como resultado
id (agregado) idprop id2
6 1 4
4 2 1
5 3 1

ando medio perdido y no encuentro solucion
gracias
espero si alguien puede ayudarme.
  #6 (permalink)  
Antiguo 08/08/2009, 14:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: ayuda con select pleasee

Ok ahora por lo que me has dicho no necesitas crear el id (aunque es buena practica por si en el futuro lo necesitas, asi que te sugiero que lo dejes creado). Lo que tienes que hacer es agrupar primero luego corremos un codigo en PHP y luego verificacamos el numero mayor

Ejemplo
Código PHP:
Ver original
  1. $s ="SELECT idprop FROM tabla GROUP BY idprop";
  2. $r = mysql_query($s) or die(mysql_error());
  3.  
  4. while($row = mysql_fetch_assoc($r)){
  5.   $r2 = mysql_query("SELECT max(id2) as mId2, idprop FROM tabla WHERE idprop = '".$row["idprop"]."'") or die(mysql_error());
  6.   $row2 = mysql_fetch_assoc($r2);
  7.   echo "Para el idprop " . row2["idprop"] . " el numero mayor es " . $row2["mId2"];
  8. }

Lo mas probable es que exista una mejor forma pero con esto debe funcionarte
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 08/08/2009, 16:01
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: ayuda con select pleasee

asi anda barbaro con ese ejemplo que puse, pero ahora el problema es que yo puse como ejemplo eso. en la tabla verdadera seria igual pero el id2 es un nombre en ves de numero osea tendria que poner el ultimo insertado , seria asi para que se entienda.

idpropietario localidad periodo
1 flores 2008
2 buenos aires 2008
1 cordoba 2009
1 carlos paz 2010

y de resultado tiene que dar
1 carlos paz 2010
2 buenos aires 2008

osea de cada idpropietario la ultima localidad y el periodo.

de esta forma como me pusiste esto no anda.
a ver si encontras alguna forma de hacerlo con estos datos.

muchisimas gracias desde ya.
  #8 (permalink)  
Antiguo 08/08/2009, 17:46
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: ayuda con select pleasee

ya encontre la solucion navegando el foro .
La pongo por si le sirve a alguien

$a = mysql_query("SELECT camposrev.idpropietario, camposrev.localidad, camposrev.periodo,campos.*
FROM camposrev
INNER JOIN (
SELECT MAX(periodo) FECH, localidad,idpropietario
FROM camposrev
GROUP BY idpropietario
)t1 ON t1.idpropietario = camposrev.idpropietario
AND t1.FECH = camposrev.periodo INNER JOIN campos on campos.id=camposrev.idpropietario
ORDER BY camposrev.idpropietario DESC");
while($row = mysql_fetch_assoc($a)){
echo $row['localidad'];
echo "-".$row['idpropietario'];
echo $row['propietario'];
echo "</br>" ;
}

con ese select saco lo que necesitaba.

Gracias.
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 12:14.