| Listado completo de tutoriales 71 - Función de control if con varias tablas. | 
Podemos emplear "if" y "case" en la misma sentencia que usamos un "join".
Por ejemplo, tenemos las tablas "libros" y "editoriales" y queremos saber si hay libros de cada una de las editoriales:
select e.nombre, if (count(l.codigoeditorial)>0,'Si','No') as hay from editoriales as e left join libros as l on e.codigo=l.codigoeditorial group by e.nombre;
Podemos obtener una salida similar usando "case" en lugar de "if":
select e.nombre, case count(l.codigoeditorial) when 0 then 'No' else 'Si' end as 'Hay' from editoriales as e left join libros as l on e.codigo=l.codigoeditorial group by e.nombre;
Ingresemos al programa "Workbench" y ejecutemos el siguiente bloque de instrucciones SQL:
 drop table if exists libros, editoriales;
 create table libros(
  codigo int unsigned auto_increment,
  titulo varchar(40) not null,
  autor varchar(30) not null default 1,
  codigoeditorial tinyint unsigned not null,
  precio decimal(5,2) unsigned,
  primary key (codigo)
 );
 
 create table editoriales ( 
  codigo tinyint unsigned auto_increment,
  nombre varchar(20),
  primary key (codigo) 
 );
 insert into editoriales (nombre) values ('Planeta');
 insert into editoriales (nombre) values ('Emece');
 insert into editoriales (nombre) values ('Paidos');
 insert into libros (titulo, autor,codigoeditorial,precio)
  values('Alicia en el pais de las maravillas','Lewis Carroll',1,23.5);
 insert into libros (titulo, autor,codigoeditorial,precio)
  values('Alicia a traves del espejo','Lewis Carroll',2,25);
 insert into libros (titulo, autor,codigoeditorial,precio) 
  values('El aleph','Borges',2,15);
 insert into libros (titulo, autor,codigoeditorial,precio)
  values('Matemática estas ahi','Paenza',1,10);
 -- Queremos saber si hay libros de cada una de las editoriales,
 -- necesitamos consultar ambas tablas:
 select e.nombre,
  if (count(l.codigoeditorial)>0,'Si','No') as hay
  from editoriales as e
  left join libros as l
  on e.codigo=l.codigoeditorial
  group by e.nombre;
 -- Podemos obtener una salida similar usando "case" en lugar de "if":
 select e.nombre,
  case count(l.codigoeditorial)
   when 0 then 'No'
   else 'Si' end as 'Hay'
  from editoriales as e
  left join libros as l
  on e.codigo=l.codigoeditorial
  group by e.nombre;
Genera una salida similar a esta:
