Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

consulta sobre registros que no existen en otra tabla

Estas en el tema de consulta sobre registros que no existen en otra tabla en el foro de Mysql en Foros del Web. Tengo una consulta con mysql y php donde deseo obtener los usuarios asociados a un proyecto, tengo unos campos checkbox por medio de un form ...
  #1 (permalink)  
Antiguo 15/11/2011, 21:22
 
Fecha de Ingreso: noviembre-2011
Mensajes: 8
Antigüedad: 12 años, 5 meses
Puntos: 0
consulta sobre registros que no existen en otra tabla

Tengo una consulta con mysql y php donde deseo obtener los usuarios asociados a un proyecto, tengo unos campos checkbox por medio de un form donde listo los usuarios:

Código PHP:
Código PHP:
<form action="graficos_colaboradores.php" method="post" id="fo3" name="fo3"> 
                        <table width="100%"> 
                            <? 
if ($usuarios 0) { 

                            while (
$usuario mysql_fetch_object($consulta1)) { 
                            
?> 
                            <tr class="intA" valign="top"> 
                                <td align="left"><h3><?= $usuario -> nombre 
                                ?>
</h3></td> 
                                <td align="left"><? echo '<input type="checkbox" id="user" name="usuarios[]" value="' $usuario -> idUsuario '" style="margin: 0px"  />';?></td> 
                            </tr> 
                            <? }?> 
                            <tr> 
                                <td colspan="2"> 
                                <input type="submit" name="button" id="button" value="Enviar"  /> 
                                </td> 
                                <?    } else {?> 
                            </tr> 
                            <tr> 
                                <td colspan="2">No hay colaboradores disponibles</td> 
                            </tr> 
                            <? 
                            

                            
?> 
                        </table> 
                    </form>
este envia los datos mediante ajax-jquery:

Código HTML:
Código HTML:
<script language="javascript">
	$.noConflict();
	jQuery(document).ready(function() {
		// Interceptamos el evento submit
		jQuery('#fo3').submit(function() {
			// Enviamos el formulario usando AJAX
			jQuery.ajax({
				type : 'POST',
				url : jQuery(this).attr('action'),
				data : jQuery(this).serialize(),
				// Mostramos un mensaje con la respuesta de PHP
				success : function(data) {
					jQuery('#result').html(data);
				}
			})
			return false;
		});
	})
</script> 
donde por php recibe el campo usuarios:

Código PHP:
Código PHP:
$usuarios $_POST["usuarios"]; 
     
    for(
$i=0;$i<count($usuarios); $i++) 
    { 
        
$consulta2 $objUsuario->mostrar_usuario_participacion_22222($usuarios[$i]); 
         
            while(
$resultado=mysql_fetch_object($consulta2)) 
            {                 
                
$idsproyectos[$resultado->idProyecto]++;                 
            }             
         
         
    } 
esto lo que hace es guardar los id proyectos y sumarle la cantidad de repeticiones por proyecto por cada usuario que recibo del checkbox
este llama al objeto usuario, a la funcion :

Código PHP:
Código PHP:
function 
mostrar_usuario_participacion_22222($id) { 
        if (
$this -> con -> conectar() == true) { 

            
$sql = ("SELECT * 
FROM proyecto_has_usuario pu 
LEFT OUTER JOIN usuario u ON pu.Usuario_idUsuario = u.idUsuario 
LEFT OUTER JOIN proyecto p ON pu.Proyecto_idProyecto = p.idProyecto 
WHERE u.idUsuario = " 
$id ""); 

            
$resultado mysql_query($sql); 

            if (!
$resultado) { 
                die(
"Sql Invalido mostrar_usuario_participacion_22222 :" mysql_error()); 

            } 
            return 
$resultado

        } 
    } 
lo que busca son los proyectos del usuario que envio en el for, aqui no hay problema me trae bien los datos.

ahora no si si lo estoy haciendo bien, pero sugiero ideas que me puedan inspirar para poder obtener los usuarios que estan en un proyecto, pero si me trae un usuario que no este no me muestre ningun dato por ejemplo en esta consulta:


Código PHP:
Código PHP:
SELECT FROM proyecto_has_usuario pu 
LEFT OUTER JOIN usuario u ON pu
.Usuario_idUsuario u.idUsuario 
LEFT OUTER JOIN proyecto p ON pu
.Proyecto_idProyecto p.idProyecto 
WHERE u
.idUsuario in (1,2GROUP BY pu.Proyecto_idProyecto HAVING COUNT(*) >= 
me trae los datos que el usuario 1 y 2 estan en los mismos proyectos pero si yo le pongo mas usuarios a esa consulta me sige tirando y arrojando mas proyectos por cada usuario q agrege, yo deseo que cuando haya un usuario 3 y no este en los mismo proyectos que 1 y 2 no me muestre ninguna informacion ya que no esta en el grupo de usuarios que estan dentro del proyecto. no se si me explique bien por favor si alguien me puede ayudar se lo agradeceria mucho!!!!!!!!!!!...


aqui tengo la funcion que me recibe el sql anterior:


Código PHP:
Código PHP:
function 
mostrar_usuario_participacion_proyecto($id) { 
        if (
$this -> con -> conectar() == true) { 
            if (
count($id) == 1) { 
                for (
$i 0$i count($id); $i++) { 
                    
//echo $usuarios[$i]; 
                    
$sql = ("SELECT * 
FROM proyecto_has_usuario pu 
LEFT OUTER JOIN usuario u ON pu.Usuario_idUsuario = u.idUsuario 
LEFT OUTER JOIN proyecto p ON pu.Proyecto_idProyecto = p.idProyecto 
WHERE u.idUsuario = " 
$id[$i] . ""); 
                } 
            } else { 

                
//echo count($id); 
                
$sql "SELECT * FROM proyecto_has_usuario pu 
LEFT OUTER JOIN usuario u ON pu.Usuario_idUsuario = u.idUsuario 
LEFT OUTER JOIN proyecto p ON pu.Proyecto_idProyecto = p.idProyecto 
WHERE u.idUsuario in ("

                
$s 1
                for (
$i 0$i count($id); $i++) { 

                    
//echo count($id); 
                    
if (count($id) == $s) { 
                        
$sql .= "    " $id[$i] . ")"
                    } else { 
                        
$sql .= "" $id[$i] . ","
                    } 

                    
$s++; 
                } 
                
$sql .= " GROUP BY pu.Proyecto_idProyecto HAVING COUNT(*) >= 2"

            } 
            echo 
$sql
            
$resultado mysql_query($sql); 

            if (!
$resultado) { 
                die(
"Sql Invalido mostrar_usuario_participacion_proyecto :" mysql_error()); 

            } 
            return 
$resultado

        } 
    } 
por si me falta algo o si alguien por favor me puede ayudar ya que es urgente alguna idea :)
gracias
  #2 (permalink)  
Antiguo 16/11/2011, 09:03
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: consulta sobre registros que no existen en otra tabla

Hola soyarzun:

Muchas veces se ha insistido en este foro que NO SE DEBE MEZCLAR CÓDIGO PHP (ni de ningún otro lenguaje de programación) CON CUESTIONES DE SQL O BASE DE DATOS. Son cosas completamente diferentes, este es un foro de MySQL y por lo tanto sólo deberías preguntar cuestiones sobre este. Sería más conveniente que publicaras tu pregunta en el foro de PHP

http://www.forosdelweb.com/f18.

Ahora bien, el día de ayer alguien preguntó algo muy parecido a lo que expones en tu post, incluso maneja el mismo nombre en sus tablas (no sé si seas la misma persona) pero dale un vistazo para ver si te puede servir.

http://www.forosdelweb.com/f86/no-mo...nsulta-958044/


Si continuas con problemas entonces publica tu pregunta en el foro PHP.

Saludos
Leo.

Etiquetas: campos, join, php, query, registros, select, 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:14.