Foros del Web » Programando para Internet » PHP »

¿distinct?

Estas en el tema de ¿distinct? en el foro de PHP en Foros del Web. Hola yo solo quiero que se ejecute distinct en el menu y no en menu y submenu @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original $encuesta = ...
  #1 (permalink)  
Antiguo 04/09/2012, 04:47
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 3 meses
Puntos: 27
¿distinct?

Hola yo solo quiero que se ejecute distinct en el menu y no en menu y submenu

Código SQL:
Ver original
  1. $encuesta = mysqli_query($connection, "SELECT DISTINCT (menu),submenu FROM menu");

Si el codigo hubiese funcionado me tendria que salir asin que es como yo quiero:

Home home1 home2 home3

Pero NO me sale asin que es como yo no quiero:
Home home1 Home home2 Home home3
  #2 (permalink)  
Antiguo 04/09/2012, 05:25
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 3 meses
Puntos: 27
Respuesta: ¿distinct?

?? Me podeis resolver la duda?
  #3 (permalink)  
Antiguo 04/09/2012, 05:33
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: ¿distinct?

Tendrías que usar una función recursiva para obtener los hijos de cada menú
probá esto, funciona, y fijate como lo podrías adaptar a tu código



Código PHP:
/*
--
-- Estructura de tabla para la tabla `menu`
--

CREATE TABLE IF NOT EXISTS `menu` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `menu_nombre` varchar(25) NOT NULL,
  `id_padre` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

--
-- Volcado de datos para la tabla `menu`
--

INSERT INTO `menu` (`id`, `menu_nombre`, `id_padre`) VALUES
(1, 'Home', 0),
(2, 'home1', 1),
(3, 'home2', 1),
(4, 'home3', 1),
(5, 'Productos', 0),
(6, 'productos1', 5),
(7, 'productos2', 5),
(8, 'productos3', 5);

*/ 
function con(){
    
$conexion=mysql_connect("localhost","root","")or die ('Ha fallado la conexión: '.mysql_error());
    
//selección de la base de datos con la que vamos a trabajar
    
mysql_select_db("pruebas",$conexion);
    return 
$conexion;
}
 
 function 
menu($id_padre=0){
     
    
         
$sql "SELECT * FROM menu WHERE id_padre = $id_padre";     
         
$query mysql_query($sql,con());     
         while(
$resultado mysql_fetch_assoc($query)){    
             
             @
$menu .=  '<li>'.$resultado['menu_nombre'].'</li>'//
            
@$menu .=menu($resultado['id']); 
             
         }
     
             
$menu '<ul>'.$menu.'</ul>';
            return 
$menu;
  }
 
$menu menu();
echo 
$menu
__________________
la la la
  #4 (permalink)  
Antiguo 04/09/2012, 05:35
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 3 meses
Puntos: 27
Respuesta: ¿distinct?

Yo solo quiero saber lo de distinct
  #5 (permalink)  
Antiguo 04/09/2012, 05:54
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: ¿distinct?

habria que ver como es la estructura de la tabla menu.
__________________
la la la
  #6 (permalink)  
Antiguo 04/09/2012, 05:56
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 3 meses
Puntos: 27
Respuesta: ¿distinct?

Yo solo tengo esto:

Código PHP:
Ver original
  1. $encuesta = mysqli_query($connection, "SELECT DISTINCT (menu),submenu FROM menu");
  2.     while ($encuesta1 = mysqli_fetch_array($encuesta)){
  3.     echo $encuesta1['menu'];
  4.     echo $encuesta1['submenu'];
  5.     }
  #7 (permalink)  
Antiguo 04/09/2012, 05:58
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 9 meses
Puntos: 177
Respuesta: ¿distinct?

la estructura de la tabla, ponela acá para verla
__________________
la la la
  #8 (permalink)  
Antiguo 04/09/2012, 06:03
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 3 meses
Puntos: 27
Respuesta: ¿distinct?

am ok

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `menu` (
  2.   `id` MEDIUMINT NOT NULL AUTO_INCREMENT,
  3.   `menu` VARCHAR(20) NOT NULL DEFAULT '',
  4.   `submenu` VARCHAR(20) NOT NULL DEFAULT '',
  5.   PRIMARY KEY (`id`)
  6. )
  #9 (permalink)  
Antiguo 04/09/2012, 06:21
Avatar de jlct  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 148
Antigüedad: 12 años, 7 meses
Puntos: 19
Respuesta: ¿distinct?

Prueba con esto

Select case when (Select distinct menu from menu) then menu else null end menu, submenu from menu
  #10 (permalink)  
Antiguo 04/09/2012, 06:26
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 3 meses
Puntos: 27
Respuesta: ¿distinct?

....... como? asin?

$encuesta = mysqli_query($connection, "(SELECT DISTINCT (menu),submenu) FROM menu");
while ($encuesta1 = mysqli_fetch_array($encuesta)){
echo $encuesta1['menu'];
echo $encuesta1['submenu'];
}
  #11 (permalink)  
Antiguo 04/09/2012, 06:45
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 3 meses
Puntos: 27
Respuesta: ¿distinct?

Pero donde pongo esto
Select case when (Select distinct menu from menu) then menu else null end menu, submenu from menu
  #12 (permalink)  
Antiguo 04/09/2012, 07:59
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 3 meses
Puntos: 27
Php y mysqli

Mi codigo es este

Código PHP:
Ver original
  1. $encuesta = mysqli_query($connection, "SELECT (SELECT DISTINCT menu FROM menu), submenu FROM menu");
  2. echo mysqli_error($connection);
  3.     while ($encuesta1 = mysqli_fetch_array($encuesta)){
  4.     echo "<b>$encuesta1[menu]</b>";
  5.     echo $encuesta1['submenu'];
  6.     }

Mi problema esque sale

Código SQL:
Ver original
  1. Warning: mysqli_query() [FUNCTION.mysqli-query]: (21000/1242): Subquery RETURNS more than 1 ROW IN C:\xampp\htdocs\encuesta\INDEX.php ON line 5
  2. Subquery RETURNS more than 1 ROW
  3. Warning: mysqli_fetch_array() expects parameter 1 TO be mysqli_result, BOOLEAN given IN C:\xampp\htdocs\encuesta\INDEX.php ON line 7

Y yo quiero que el distinct sea solo en el menu y no en el submenu
  #13 (permalink)  
Antiguo 04/09/2012, 08:02
Avatar de jlct  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 148
Antigüedad: 12 años, 7 meses
Puntos: 19
Respuesta: ¿distinct?

Esa es tu consulta debes agregarla en esta linea

$encuesta = mysqli_query($connection, "Select case when (Select distinct menu from menu) then menu else null end menu, submenu from menu");
  #14 (permalink)  
Antiguo 04/09/2012, 08:05
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 3 meses
Puntos: 27
Respuesta: ¿distinct?

Eso es lo mismo que esto:

SELECT (SELECT DISTINCT menu FROM menu), submenu FROM menu
Y me sale error
  #15 (permalink)  
Antiguo 04/09/2012, 08:16
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 6 meses
Puntos: 58
Respuesta: Php y mysqli

Es que SELECT (SELECT DISTINCT menu FROM menu), submenu FROM menu te devolverá varios submenú por cada menú claro.

Yo lo haría de la siguiente forma:
un while pasando los menus y otro while dentro con su propia consulta pasando los submenús, es mucho más fácil.

while (menu) {
echo "Menu";
while (submenu cuando menu = menu)
{
echo "submenu";
}
}


Sino haciendo lo que haces pero añadiendo un GROUP BY menu pero aún así si quieres sacar todos los submenús de cada menú no se como sería
  #16 (permalink)  
Antiguo 04/09/2012, 08:37
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 3 meses
Puntos: 27
Respuesta: Php y mysqli

Claro pero si ago 2 while me saldria asin

Index
Home
home1
home2
home3
index1
index2
index3

Pero asin no quiero yo yo quiero asin:
Index
index1
index2
index3
Home
home1
home2
home3
  #17 (permalink)  
Antiguo 04/09/2012, 08:41
Avatar de antoniopol  
Fecha de Ingreso: agosto-2012
Ubicación: Valladolid
Mensajes: 114
Antigüedad: 12 años, 2 meses
Puntos: 21
Respuesta: Php y mysqli

Cual es tu estructura de las tablas o de la tabla menu??? el campo menu es index y home?? y submenu el resto??? explicanos un poco más y seguro que te podemos echar una mano.
__________________
>> Blog de desarrollo web.
>> @antoniopol06 amante de la Web =D
  #18 (permalink)  
Antiguo 04/09/2012, 08:46
Avatar de antoniopol  
Fecha de Ingreso: agosto-2012
Ubicación: Valladolid
Mensajes: 114
Antigüedad: 12 años, 2 meses
Puntos: 21
Respuesta: Php y mysqli

Yo haría lo siguiente:
Código PHP:
Ver original
  1. $encuesta = mysqli_query($connection, "SELECT distinct(menu) FROM menu");
  2. echo mysqli_error($connection);
  3. echo "<ul>";
  4.     while ($encuesta1 = mysqli_fetch_array($encuesta)){
  5.     echo "<li>$encuesta1["menu"]</li>";
  6.     $sql = mysqli_query($connection, "SELECT submenu FROM menu where menu='$encuesta1["menu"]'");
  7.         echo "<ul>"
  8.         while ($submenu = mysqli_fetch_array($sql)){
  9.                           echo "<li>$submenu["submenu"]</li>";
  10.                }
  11.         echo "</ul>";
  12.     }
  13. echo "</ul>"

Creo que esto te servirá
__________________
>> Blog de desarrollo web.
>> @antoniopol06 amante de la Web =D
  #19 (permalink)  
Antiguo 07/09/2012, 07:01
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 12 años, 3 meses
Puntos: 27
Php destinct

Hola yo tengo esta consulta
Código SQL:
Ver original
  1. mysqli_query($connectiom, SELECT  ('SELECT DISTINCT title FROM poll'),content FROM poll");

Y me sale el siguinte error
Undefined index: title in

Pero si le quito los '' quedaria hacin
Código SQL:
Ver original
  1. mysqli_query($connectiom, SELECT  (SELECT DISTINCT title FROM poll),content FROM poll");

y me sale el siguiente error
mysqli_query() [function.mysqli-query]: (21000/1242): Subquery returns more than 1 row in

Yo quiero hacer en la misma consulta
1- Title sea DISTINCT pero content no, solo title

Etiquetas: mysql, mysqli, sql
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:03.