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

Extraer datos comunes de una tabla

Estas en el tema de Extraer datos comunes de una tabla en el foro de Bases de Datos General en Foros del Web. Buenas, necesitaba saber qué consulta SQL debo realizar para sacar los datos comunes entre dos columnas, es decir, tengo la siguiente tabla: Columna A Columna ...
  #1 (permalink)  
Antiguo 27/02/2018, 10:16
Usuario no validado
 
Fecha de Ingreso: febrero-2002
Mensajes: 7
Antigüedad: 22 años, 9 meses
Puntos: 0
Pregunta Extraer datos comunes de una tabla

Buenas, necesitaba saber qué consulta SQL debo realizar para sacar los datos comunes entre dos columnas, es decir, tengo la siguiente tabla:

Columna A Columna B
3 6
3 17
3 18
4 6
4 18
5 6
5 18
8 17
12 17
12 18
13 6
13 17

Querría sacar los comunes respecto a la columna A, es decir, si cojo de la columna A el 3, 4 y 5 me debería dar como resultado los registros 6 y 18 de la columna B ya que son los comunes a los tres valores de la columna A. No se si me he explicado bien. Espero me podáis ayudar.

Muchas gracias y un saludo
  #2 (permalink)  
Antiguo 27/02/2018, 10:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Extraer datos comunes de una tabla

Se podria hacer un con join a la misma tabla usando las 2 columnas algo como esto:


Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. col1 INT,
  4. col2 INT
  5. )
  6.  
  7. INSERT INTO #temp VALUES (3, 6)
  8. INSERT INTO #temp VALUES (3, 17)
  9. INSERT INTO #temp VALUES (3, 18)
  10. INSERT INTO #temp VALUES (4, 6)
  11. INSERT INTO #temp VALUES (4, 18)
  12. INSERT INTO #temp VALUES (5, 6)
  13. INSERT INTO #temp VALUES (5, 18)
  14. INSERT INTO #temp VALUES (8, 17)
  15. INSERT INTO #temp VALUES (12, 17)
  16. INSERT INTO #temp VALUES (12, 18)
  17. INSERT INTO #temp VALUES (13, 6)
  18. INSERT INTO #temp VALUES (13, 17)
  19.  
  20. SELECT test.col2 FROM(
  21. SELECT t1.col2,COUNT(t1.col2) AS total FROM #temp AS t1
  22. INNER JOIN #temp AS t2 ON (t1.col1=t2.col1 AND t1.col2=t2.col2)
  23. WHERE t1.col1 IN (3,4,5)
  24. GROUP BY t1.col2
  25. ) AS test WHERE total=(
  26. SELECT MAX(total) FROM(
  27. SELECT t1.col2,COUNT(t1.col2) AS total FROM #temp AS t1
  28. INNER JOIN #temp AS t2 ON (t1.col1=t2.col1 AND t1.col2=t2.col2)
  29. WHERE t1.col1 IN (3,4,5)
  30. GROUP BY t1.col2
  31. ) AS completa)

un poco rebuscado pero da los valores que ocupas

col2
6
18
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: 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 12:48.