MySQL - union o iner join , como hacer una consulta

   
Vista:
Imágen de perfil de francisco

union o iner join , como hacer una consulta

Publicado por francisco (21 intervenciones) el 08/01/2018 20:19:04
Hola buen dia en general,

tengo un problema espero me puedan ayudar a solucionarlo ya que no tengo experiencia en este tema y me esta dando bastante trabajo solucionarlo.


tengo mi base de datos la cual tiene 2 tablas, 1 tiene al rededor de 40 campos se llama h40 y la otra simplemente tiene 5 campos y se llama catalogo. El detalle que estoy utilizando PHPExcel en una tabla CRUD solo con la informacion de mi tabla h40, al final tengo unas columnas que descargan este archivo con la informacion que le corresponde de cada fila correspondiente al id. en uno de los campos esta uno que se llama $Part que va asi directo en una celda.
el problema que tengo es que necesito que este informacion de dos campos de mi tabla catalgo en dos celdas, dependiento de la informcaion del campo $Part que esta en la tabla h40
por ejemplo si la informacion que esta $Part es igual a $Part2 que entonces en mi archivo excel se ponga los otros dos campos.
ya lo intente hacer mediante un if pero no me resulto segun a lo que e buscado es problema de query pero no se como hacer para que se ejecute tal accion
otro detalle no estan relacionadas por lo cual no puedo usar iner join y tampoco tiene el mismo numero de campos por lo cual tampoco puedo usar union
esper me puedan ayudar buen dia y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

union o iner join , como hacer una consulta

Publicado por leonardo_josue (400 intervenciones) el 08/01/2018 21:20:42
Hola Francisco:

No termino de entender qué es lo que pretendes obtener de información, sobre todo si mencionas que las dos tablas no están relacionadas... esto que dices sería algo así como querer sumar naranjas con manzanas y esperar que el resultado sean duraznos O_o.

Te sugiero dos cosas: primero, postea cuál es la estructura de tus tablas y pon algunos datos de ejemplo de cada una de ellas. A partir de estos datos, entonces dinos qué es lo que esperas obtener como salida, así será más factible que te podamos dar algún tipo de ayuda. Segundo, trata de no mezclar temas en el foro... aquí tratamos temas exclusivamente de MySQL, y muchos de los foristas conocemos poco o nada de PHP o cualquier otra cosa relacionada. Hay foros especializados en esos temas en donde los expertos pueden ayudarte mejor.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de francisco

union o iner join , como hacer una consulta

Publicado por francisco (21 intervenciones) el 08/01/2018 22:40:29
hola Leo gracias por responder,

bueno respecto a lo de las base de datos que no estan relacionadas uno con otras, es por que la primer tabla yo no la cree, ya esta echa y no la puedo modificar ni hacerle nada ya que la utilizan en otros proyectos, y el proyecto que estaban realizando nunca penzaron en que se iba a ocupar esta tabla y ahora que la cree no se como poder relacionarlas como te comento no tengo mucha experiencia en el tema. Y no trato de mesclar temas simple mente di a conocer lo que estaba haciendo para que se dieran mas o menos una idea y quizas asi podria ser un poco mas facil poderme ayudar ya que ha otras personas que consulte me comentaron que era mi problema en la bd por eso es que entre al foro.
Entonces serian dos problemas los que tengo:
1.- como relacionar mis tablas si una de ellas ya esta creada con parametros un poco no recomendados para hacer una tabla
2.- como hacer la query para que me de el resultado que estoy buscando.


creo yo que solucionado lo primero ya podre seguir con lo segundo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

union o iner join , como hacer una consulta

Publicado por leonardo_josue (400 intervenciones) el 08/01/2018 23:21:49
Hola de nuevo Francisco:

No nos vuelves a poner nada de información útil en tu post y así es imposible ayudarte. Nos preguntas a nosotros que cómo puedes relacionar tus tablas, cuando nosotros ni conocemos tus tablas, ni conocemos la información que almacenas en ellas. Y lo mismo pasa con el resultado que estás esperando... ESO SOLO LO SABEN DIOS Y TU, porque al menos en este foro no nos dices qué diablos es lo que esperas obtener como salida...

Vuelvo a insistir con lo que puse en mi primer post,

1. dinos primero cuál es la estructura de sus tablas, algo como esto:

1
2
3
4
5
6
7
8
mysql> DESCRIBE tabla;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | int(11)    | YES  |     | NULL    |       |
| campo | varchar(6) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

2. Postea algunos datos de ejemplo de tu tabla, es decir, algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> select * from tabla order by id;
+------+--------+
| id   | campo  |
+------+--------+
|    1 | 022016 |
|    2 | 022016 |
|    3 | 032016 |
|    4 | 022017 |
|    5 | 022017 |
|    6 | 022017 |
|    7 | 042016 |
+------+--------+
7 rows in set (0.00 sec)

3. A partir de estos datos, dinos qué es lo que esperas obtener como salida,

EJEMPLO; quiero separar en dos columnas el valor de CAMPO, para identificar el mes y el año de una fecha:

1
2
3
4
5
6
7
8
9
10
11
+--------+------+------+
| campo  | mes  | anio |
+--------+------+------+
| 022016 | 02   | 2016 |
| 022016 | 02   | 2016 |
| 032016 | 03   | 2016 |
| 022017 | 02   | 2017 |
| 022017 | 02   | 2017 |
| 022017 | 02   | 2017 |
| 042016 | 04   | 2016 |
+--------+------+------+

Entonces así es como te podremos ayudar.

Saludos.
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de francisco

union o iner join , como hacer una consulta

Publicado por francisco (21 intervenciones) el 08/01/2018 23:37:24
catalogo;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| Part        | varchar(250) | NO   |     | NULL    |                |
| descripcion | varchar(250) | NO   |     | NULL    |                |
| numFraccion | int(11)      | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
4 rows in set (0.03 sec)
 
 
 h40d;
+--------------------------------------------+-----------------+------+-----+---
------+----------------+
| Field                                      | Type            | Null | Key | De
fault | Extra          |
+--------------------------------------------+-----------------+------+-----+---
------+----------------+
| PO                                         | varchar(255)    | YES  |     | NU
LL    |                |
| SO                                         | varchar(255)    | YES  |     | NU
LL    |                |
| Ss                                         | varchar(255)    | YES  |     | NU
LL    |                |
| OrderLine                                  | varchar(255)    | YES  |     | NU
LL    |                |
| Ship-Date                                  | date            | YES  |     | NU
LL    |                |
| Scanlist-Date                              | varchar(255)    | YES  |     | NU
LL    |                |
| Part                                       | varchar(255)    | YES  |     | NU
LL    |                |
| Part Desc                                  | varchar(255)    | YES  |     | NU
LL    |                |
| Part Type                                  | varchar(255)    | YES  |     | NU
LL    |                |
| Qty                                        | varchar(255)    | YES  |     | NU
LL    |                |
| Unit Price                                 | varchar(255)    | YES  |     | NU
LL    |                |
| Total Price                                | varchar(255)    | YES  |     | NU
LL    |                |
| Case #                                     | varchar(255)    | YES  |     | NU
LL    |                |
| Dim/Pesos                                  | varchar(255)    | YES  |     | NU
LL    |                |
| COO                                        | varchar(255)    | YES  |     | NU
LL    |                |
| Invoice#                                   | varchar(255)    | YES  |     | NU
LL    |                |
| Carrier                                    | varchar(255)    | YES  |     | NU
LL    |                |
| TrackId #                                  | varchar(255)    | YES  |     | NU
LL    |                |
| Man/Way#                                   | varchar(255)    | YES  |     | NU
LL    |                |
| ShipTo                                     | varchar(255)    | YES  |     | NU
LL    |                |
| Country-To                                 | varchar(255)    | YES  |     | NU
LL    |                |
| MOT                                        | varchar(255)    | YES  |     | NU
LL    |                |
| Ship-Address                               | varchar(255)    | YES  |     | NU
LL    |                |
| Ship-Time                                  | varchar(255)    | YES  |     | NU
LL    |                |
| Scanlist-Time                              | varchar(255)    | YES  |     | NU
LL    |                |
| Part Req                                   | varchar(255)    | YES  |     | NU
LL    |                |
| Seal #                                     | varchar(255)    | YES  |     | NU
LL    |                |
| Scanlist #                                 | varchar(255)    | YES  |     | NU
LL    |                |
| Scanlist-Transmitted                       | varchar(255)    | YES  |     | NU
LL    |                |
| Service-Level                              | varchar(255)    | YES  |     | NU
LL    |                |
| SAP Invoice #                              | varchar(255)    | YES  |     | NU
LL    |                |
| User ID                                    | varchar(255)    | YES  |     | NU
LL    |                |
| Asset ID                                   | varchar(255)    | YES  |     | NU
LL    |                |
| Unit Serial                                | varchar(255)    | YES  |     | NU
LL    |                |
| # Eco Remolque / * Reparacion Menor        | varchar(255)    | YES  |     | NU
LL    |                |
| ETA Committed                              | varchar(255)    | YES  |     | NU
LL    |                |
| Arrival Date Real                          | varchar(255)    | YES  |     | NU
LL    |                |
| Est delivery date                          | varchar(255)    | YES  |     | NU
LL    |                |
| Re-programaciones                          | varchar(255)    | YES  |     | NU
LL    |                |
| Uncrate tracking                           | varchar(255)    | YES  |     | NU
LL    |                |
| Delivery Date                              | varchar(255)    | YES  |     | NU
LL    |                |
| Signed by                                  | varchar(255)    | YES  |     | NU
LL    |                |
| POD File                                   | varchar(255)    | YES  |     | NU
LL    |                |
| IS Order                                   | varchar(255)    | YES  |     | NU
LL    |                |
| DCO                                        | varchar(255)    | YES  |     | NU
LL    |                |
| comentarios                                | varchar(255)    | YES  |     | NU
LL    |                |
| Accidente imputable a / (NO PAGAR flete) : | varchar(255)    | YES  |     | NU
LL    |                |
| Real Delivery Date                         | varchar(255)    | YES  |     | NU
LL    |                |
| Real Delivery Date2                        | varchar(255)    | YES  |     | NU
LL    |                |
| Factura Pagada                             | varchar(255)    | YES  |     | NU
LL    |                |
| Invoice Summary                            | varchar(255)    | YES  |     | NU
LL    |                |
| Fecha Resumen Facturas                     | varchar(255)    | YES  |     | NU
LL    |                |
| Costo Factura                              | varchar(255)    | YES  |     | NU
LL    |                |
| id                                         | int(6) unsigned | NO   | PRI | NU
LL    | auto_increment |
+--------------------------------------------+-----------------+------+-----+---
------+----------------+
54 rows in set (0.01 sec)


esas son mis dos tablas


Untitled
informacion de la tabla catalogo,
Untitled1
informacion de la tabla h40d, solo un poco ya que son muchos campos


lo que quiero hacer es que el campo Part de la tabla h40d busque en la tabla campos en el campo Part si la informacion es igual entonces me imprima los campos descripcion y numFraccion
espero te sirva esta informacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

union o iner join , como hacer una consulta

Publicado por leonardo_josue (400 intervenciones) el 09/01/2018 16:23:46
Hola de nuevo:

Veamos si esto es lo que quieres. Para mi ejemplo, voy a considerar estas dos tablas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> SELECT * FROM h40d;
+------+------------+-----------+-------------+------------------+
| id   | PO         | SO        | Part        | Part_Desc        |
+------+------------+-----------+-------------+------------------+
|   10 | ADLJKAHSDQ | 324768925 | 111-111-111 | SERVER RACK      |
|   11 | KLJWEOASDF | 123456789 | 555-555-555 | ASM RACK         |
|   12 | DELHLKYJIU | 112233554 | 333-333-333 | COMPUTADORA      |
|   13 | BFJYRDHKNB | 745123657 | NULL        | OTRA DESCRIPCION |
|   14 | TYUJKHGFDD | 121457847 | LO QUE SEA  | ALGO             |
+------+------------+-----------+-------------+------------------+
5 rows in set (0.00 sec)
 
mysql> SELECT * FROM catalogo;
+------+-------------+--------------------------------+-------------+
| id   | Part        | descripcion                    | numFraccion |
+------+-------------+--------------------------------+-------------+
|    1 | 111-111-111 | CABLE CON CONECTORES           |     6125478 |
|    2 | 222-222-222 | JUEGO DE CABLES CON CONECTORES |     1354785 |
|    3 | 333-333-333 | PARTES PARA COMPUTADORA        |     5112233 |
|    4 | 444-444-444 | UNIDAD DE MEMORIA              |     7845123 |
+------+-------------+--------------------------------+-------------+
4 rows in set (0.00 sec)

entonces, si observamos la columna PART de la tabla h40d, podemos observar que sólo dos registros EXISTEN en la tabla catálogo, y que corresponden a las partes 111-111-111 y 333-333-333. Entonces, si entendí bien lo que quieres hacer, tu problema se resume en hacer un LEFT JOIN entre las tablas, es decir, algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql> SELECT
    ->   h40d.*,
    ->   catalogo.descripcion,
    ->   catalogo.numFraccion
    -> FROM h40d
    -> LEFT JOIN catalogo ON catalogo.part = h40d.part
    -> ORDER BY h40d.id;
+------+------------+-----------+-------------+------------------+-------------------------+-------------+
| id   | PO         | SO        | Part        | Part_Desc        | descripcion             | numFraccion |
+------+------------+-----------+-------------+------------------+-------------------------+-------------+
|   10 | ADLJKAHSDQ | 324768925 | 111-111-111 | SERVER RACK      | CABLE CON CONECTORES    |     6125478 |
|   11 | KLJWEOASDF | 123456789 | 555-555-555 | ASM RACK         | NULL                    |        NULL |
|   12 | DELHLKYJIU | 112233554 | 333-333-333 | COMPUTADORA      | PARTES PARA COMPUTADORA |     5112233 |
|   13 | BFJYRDHKNB | 745123657 | NULL        | OTRA DESCRIPCION | NULL                    |        NULL |
|   14 | TYUJKHGFDD | 121457847 | LO QUE SEA  | ALGO             | NULL                    |        NULL |
+------+------------+-----------+-------------+------------------+-------------------------+-------------+
5 rows in set (0.00 sec)

Observa que cuando la clave de la parte no existe en el catálogo, simplemente le asigna los valores de NULL a los campos descripcion y numFraccion.

Para entender mejor el concepto de LEFT JOIN, puedes preguntarle a SANTA WIKIPEDIA:

https://es.wikipedia.org/wiki/Join

Checa a ver si esto es lo que necesitas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de francisco

union o iner join , como hacer una consulta

Publicado por francisco (21 intervenciones) el 09/01/2018 17:23:25
siii de echo eso es exactamente lo que necesito muchas gracias por la paciencia y sobre todo por la ayuda muchisimas gracias..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad