Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/01/2013, 05:30
DoHITB
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 7 meses
Puntos: 33
Juntar varias consultas que usan JOIN

Buenas!

Ando un poco oxidado de mysql, a ver si me podéis ayudar:

tengo varias tablas, a saber:

Código:
element:

id_element (int, pk, ai)
id_kind (int)
id_attribute (int)
id_text (int)

kind: 

id_kind (int, pk, ai) -> campo de unión para element - kind
name (varchar)
close (int)

attribute:

id_attrubute (int, pk ) -> campo de unión para element - attribute)
key (varchar, pk)
value (varchar)

text:

id_text (int, pk, ai) -> campo de unión para element - text
id_lan (int)
word (varchar)
Entonces, tengo varios SQL con join, como por ejemplo:

Código MySQL:
Ver original
  1. select e.id_element, a.key, a.value
  2.  from attribute a
  3.  inner join element e
  4.  on e.id_attribute = a.id_attribute
  5.  and e.id_attribute in (select id_attribute
  6.                       from element e
  7.                       inner join pattern p
  8.                       on p.element = e.id_element and
  9.                       p.id_pattern = 'test');
  10.  
  11. -- nos da el id_element, todas sus key y sus values.

o otro:

Código MySQL:
Ver original
  1. select e.id_element, w.word
  2. from wordbench w
  3. inner join element e
  4. on e.id_text = w.id_wordbench and
  5. w.id_lan = 0 and
  6. e.id_attribute in (select id_attribute
  7.                     from element e
  8.                     inner join pattern p
  9.                     on p.element = e.id_element and
  10.                     p.id_pattern = 'test');
  11.  
  12. -- nos da el id_element y sus word.

y otras varias del mismo estilo.

Lo que yo quería hacer (si se puede) es obtener en una misma query algo como:

Código:
id_element, kind.name, attribute.key, attribute.value, text.word
filtrando para todos aquellos id_attribute que haya en la tabla pattern cuyo id_pattern sea el que yo especifique (es decir, aplicando al final el in (select id_attribute...)

¿Se puede hacer, o tendré que hacer 4 querys separadas?

Gracias!