Filtrado de filas de MySQL con posibilidad de más valores

user2796914:

Soy nuevo en PHP y MySQL y tengo algunos problemas. Para mí es más fácil de explicar con una captura de pantalla

Por ejemplo, aquí me quiera mostrar todas las personas, que pueden trabajar con Wordpress, Joomla y Typo3 ... En este caso, debería mostrar únicamente la Sra Mustermann Probé WHERE nombre = 'Joomla' O name = 'wordpress' O name =' TYPO3' , pero muestra las personas, que pueden trabajar con cualquiera de los tres ... lo siento por mi mala Inglés


EDITAR

OP nota: proporcionar datos de ejemplo es no no es difícil, no importa cómo Flippin "fácil" publicar una imagen es

 nachname    vorname  email                name        id
 ---------   -------  -------------------  ---------- --- 
 Mustermann  Mrs                           joomla     148 
 Mustermann  Mrs                           wordpress  148 
 Mustermann  Mrs                           typo3      148 
 Mustermann  Muster   [email protected]  wordpress  158 
 Mustermann  Muster   [email protected]  typo3      158

SELECT t.*
  FROM ( SELECT 'Mustermann' AS nachname,'Mrs' AS vorname,'' AS email,'joomla' AS NAME,'148' AS id
         UNION ALL SELECT 'Mustermann','Mrs','','wordpress','148'
         UNION ALL SELECT 'Mustermann','Mrs','','typo3','148'
         UNION ALL SELECT 'Mustermann','Muster','[email protected]','wordpress','158'
         UNION ALL SELECT 'Mustermann','Muster','[email protected]','typo3','158'
       ) t
GMB:

Un típico utiliza la solución group bya filas agregados que tienen la misma nachname, y luego a filtro con una havingcláusula:

select nachname
from mytable
where name in ('joomla', 'wordpress', 'typo3')
group by id, nachname
having count(distinct name) = 3

Supuse que ides un identificador único para nachname, por lo que añade a la group bycláusula; no dude en quitarlo si ese no es el caso.

Esta consulta le da la nachnames que han trabajado para los tres valores de la inlista.

Es bastante fácil de adaptar la consulta de manejar más (o menos) names, mediante la modificación de la inlista y el número de destino.

Si no hay duplicados (nachname, name)duplicados en la tabla, se puede utilizar count(*)en lugar de count(distinct ...), que será más eficiente.

Supongo que te gusta

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