Duda consulta base de datos MySQL

AlterElt está baneado por "troll"
Buenas!

A ver quiero hacer una consulta a una bdd mysql que me muestre dos tablas en concreto de la base de datos...

Y ya si alguién supiera como mostrar estos datos en un combo box de estos... pues sería la oxtia xDD Para una tabla lo hago así y me funciona bien, pero como puedo mostrar dos tablas en un combo de estos?

            <?php
            if ($row = mysql_fetch_array($result)){
               echo '<select name= "id_pcprint" id="id_pcprint" class="textform"';
               do {
                   echo '<option value= "'.$row["id"].'">'.$row["nom"].'</option>';
               } while ($row = mysql_fetch_array($result));
               echo '</select>';
            }?>


quizá metiendole dos echo ?

            <?php
            if ($row = mysql_fetch_array($result)){
               echo '<select name= "id_pcprint" id="id_pcprint" class="textform"';
               do {
                   echo '<option value= "'.$row["id"].'">'.$row["nom"].'</option>';
                   echo '<option value= "'.$row["id"].'">'.$row["nom"].'</option>';
               } while ($row = mysql_fetch_array($result));
               echo '</select>';
            }?>


pero entonces en id_pcprint que tendré? Una mezcla de ids de las dos tablas? xDD

pd: es para un script en php, pero estoy probando la consulta directamente en la bdd con phpmyadmin...
Hace tiempo que no trabajo con MYSQL asi que igual meto la pata... que alguien lo confirme pero...

Creo que no se pueden utilizar comodines en el nombre de la tabla... vamos...
que lo de select * from x58_* no es posible...

Ahora, que si eso si que se puede hacer, pues lo siguiente obvio es

si quieres que muestre todos los objetos menos los de las 3 tablas que indicas... como es que en la clausula NOT IT solo aparece una de ellas???..



edito......

me quiere explicar alguien como es posible que el post que yo veia antes de contestar y el que veo despues sean completamente diferentes??????????
AlterElt está baneado por "troll"
eXpineTe escribió:Hace tiempo que no trabajo con MYSQL asi que igual meto la pata... que alguien lo confirme pero...

Creo que no se pueden utilizar comodines en el nombre de la tabla... vamos...
que lo de select * from x58_* no es posible...

Ahora, que si eso si que se puede hacer, pues lo siguiente obvio es

si quieres que muestre todos los objetos menos los de las 3 tablas que indicas... como es que en la clausula NOT IT solo aparece una de ellas???


buenas,

He planteado el problema de otra forma (he editado mi primer post), como me he dado cuenta de que solo necesitare acceder a dos tablas pues yo creo que de esta forma ya iría servido jeje....

saludos

pd: disculpa la confusión xD
El problema es que en SQL el * no es un caracter comodín (al menos, no de la forma en que lo estás usando para completar el nombre de la tabla).
Se puede usar LIKE para completar , pero creo que solo se puede usar en el SELECT y no en el FROM
Que susto, ya pense que me habia vuelto completamente loco :)

Para lo que pides ahora, en oracle es

Select * from tabla1
union
select * from tabla2

No se si en Mysql existe esa clausula y ademas, las dos tablas deberian tener los mismos campos.

Pero igual que te decia al principio... que los expertos hablen.

Un saludo!
AlterElt está baneado por "troll"
he consultado el manual y si que existe UNION y UNION ALL jeje creo que será por ahi la historia...
eXpineTe escribió:Que susto, ya pense que me habia vuelto completamente loco :)

Para lo que pides ahora, en oracle es

Select * from tabla1
union
select * from tabla2

No se si en Mysql existe esa clausula y ademas, las dos tablas deberian tener los mismos campos.

Pero igual que te decia al principio... que los expertos hablen.

Un saludo!

Existe. Pero si sólo le interesa el id sería

(SELECT id FROM tabla 1)
UNION
(SELECT id FROM tabla 2)
obviamente XD
AlterElt está baneado por "troll"
Así con UNION me va bien jeje

gracias!! :D

EDITO:

Tengo un problemilla con las tablas....

El asunto es que las dos tablas tienen diferente número de columnas, entonces lo que he pensado es traerme solo los datos que me interesan...

Se pueden seleccionar 2 columnas al hacer la consulta? algo como:

SELECT id FROM x58_gateway UNION SELECT id,nom FROM x58_commutador

De la primera tabla me trago id
de la segunda tabla la id y la columna nom. Es posible esto de alguna forma?

saludos
Siempre puedes hacer las dos consultas por separado, meter los resultados en un array con la estructura que quieras y luego con un foreach construir el codigo html
AlterElt escribió:Se pueden seleccionar 2 columnas al hacer la consulta? algo como:

SELECT id FROM x58_gateway UNION SELECT id,nom FROM x58_commutador

De la primera tabla me trago id
de la segunda tabla la id y la columna nom. Es posible esto de alguna forma?

saludos


Si, claro:

SELECT id, '' nom FROM x58_gateway UNION SELECT id,nom FROM x58_commutador

Al menos en Oracle puedes hacerlo. Necesitas para la UNION llamada a las dos columnas de cada tabla, y estas deben ser del mismo tipo de dato en cada tabla y tener los mismos nombres de campo, así que recibirás como resultado para la primera tabla el campo ID y luego el campo NOM vacío, unido al ID y al NOM de la segunda tabla.

Si las dobles comillas '' no te sirven, puedes sustituirlas por lo que quieras, siempre que el tipo de dato que pongas sea del tipo nom de la segunda tabla (creo que por NULL no puedes).

Nota: '' equivale a dos comillas, las que están a la derecha del 0 en el teclado. Eso para Oracle.

Para una base de datos mysql, sería así:

SELECT id, "" nom FROM x58_gateway UNION SELECT id,nom FROM x58_commutador

Dobles comillas.
9 respuestas