Tengo dos mesas a las que me quiero unir.
Quiero todas las categorías en la tabla de categorías y también todas las categorías suscritas por un usuario en la tabla category_subscriptions.
esencialmente esta es mi consulta hasta ahora:
SELECT *
FROM categories
LEFT JOIN user_category_subscriptions 
     ON user_category_subscriptions.category_id = categories.category_id
Esto funciona bien, sin embargo, quiero agregar una cláusula where al final de la consulta, que esencialmente lo convierte en una unión interna / equi.
   SELECT *
    FROM categories
    LEFT JOIN user_category_subscriptions 
         ON user_category_subscriptions.category_id = categories.category_id 
   WHERE user_category_subscriptions.user_id = 1
¿Cómo obtengo todas las categorías y todas las categorías suscritas por un usuario en particular usando solo una consulta?
category_id es una clave tanto en la tabla de categorías como en las suscripciones de categoría_usuario. user_id que reside en la tabla user_category_subscriptions.
Gracias
                    
                        mysql
                                join
                                where-clause
                                
                    
                    
                        mmundiff
fuente
                
                fuente

Respuestas:
Debe ponerlo en la
joincláusula, no elwhere:Ver, con un
inner join, poner una cláusula en eljoino elwherees equivalente. Sin embargo, con unouter join, son muy diferentes.Como
joincondición, especifique el conjunto de filas que unirá a la tabla. Esto significa que se evalúauser_id = 1en primer lugar, y toma el subconjunto deuser_category_subscriptionscon unauser_idde las1que se unen para todas las filas encategories. Esto le dará todas las filascategories, mientras que solo lascategoriesque este usuario en particular se haya suscrito tendrán información en lasuser_category_subscriptionscolumnas. Por supuesto, todos los demáscategoriesse completaránnullen lasuser_category_subscriptionscolumnas.Por el contrario, una
wherecláusula hace la unión y luego reduce el conjunto de filas. Entonces, esto hace todas las uniones y luego elimina todas las filas dondeuser_idno es igual1. Te queda una forma ineficiente de obtener uninner join.¡Ojalá esto ayude!
fuente
AyBmesa? ¿Puedes reformular tu pregunta?Prueba esto
fuente