Estoy tratando de devolver filas combinados en la misma tabla basada en una llave en una segunda tabla

Tim impresión:

Probablemente no lo he explicado muy bien en el título, pero tengo dos tablas. Aquí es una versión simple.

channel_data

entry_id   channel_id   first_name   last_name   model   other_fields
1          4            John         Smith
2          4            Jane         Doe
3          4            Bill         Evans
4          15                                    235
5          15                                    765
6          15                                    543
7          15                                    723
8          15                                    354
9          15                                    976
10         1                                             xxx
11         2                                             yyy
12         3                                             123

channel_titles

entry_id   author_id   channel_id
1          101         4
2          102         4
3          103         4
4          101         15
5          101         15
6          101         15
7          102         15
8          102         15
9          103         15
10         101         1
11         102         2
12         103         3

No soy capaz de volver a modelar los datos por desgracia.

Necesito una lista de todas las filas con un CHANNEL_ID 15 de channel_data y junto a ellos el nombre apellido apellidos y que tiene el mismo author_id de channel_titles.

Lo que quiero de vuelta es la siguiente:

Model    First Name    Last Name
---------------------------------
235      John          Smith
765      John          Smith
543      John          Smith
723      Jane          Doe
354      Jane          Doe
976      Bill          Evans

Si el modelo se encontraba en una tabla y nombres fueron en otro esto sería mucho más simple, pero no estoy seguro de cómo hacer esto cuando están en la misma mesa.

========================================

Editado para aclarar.

Necesito conseguir cada modelo con una CHANNEL_ID 15 de channel_data

Para cada modelo que necesito para buscar el entrada_id en channel_titles para encontrar el author_id

Necesito encontrar la fila que tiene que author_id Y CHANNEL_ID 4 en títulos de los canales (cada fila con CHANNEL_ID 4 tiene una única author_id).

Necesito tomar el entrada_id de esta fila de atrás a channel_data y obtener el nombre apellido y last_name para ir con el modelo.

Soy muy consciente de que los datos no se estructura bien pero que es lo que tengo que trabajar. Estoy tratando de llevar a cabo una tarea muy pequeño en un sistema mucho más grande, la remodelación de los datos no es una opción en este momento.

Creo sub-consultas podrían ser lo que estoy buscando, pero esto no es mi área en absoluto por lo general.

Nick:

Ok, esto es enrevesado. Sin embargo, en base a su descripción, esta consulta debe darle los resultados que desea. El WHEREy JOINdescripciones siguen la lógica que ha descrito en su pregunta.

SELECT cd1.model, cd2.first_name, cd2.last_name
FROM channel_data cd1
JOIN channel_titles ct1 ON ct1.entry_id = cd1.entry_id
JOIN channel_titles ct2 ON ct2.channel_id = 4 AND ct2.author_id = ct1.author_id
JOIN channel_data cd2 ON cd2.entry_id = ct2.entry_id
WHERE cd1.channel_id = 15
ORDER BY cd1.entry_id

Salida:

model   first_name  last_name
235     John        Smith
765     John        Smith
543     John        Smith
723     Jane        Doe
354     Jane        Doe
976     Bill        Evans

Demo en SQLFiddle

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=320310&siteId=1
Recomendado
Clasificación