2 votes

MySQL Comment sélectionner plusieurs lignes avec plusieurs colonnes WHERE sur la même table ?

Je veux sélectionner room_id sur la base de la colonne user_id y del

numéro de chambre

nom d'utilisateur

del

1

23

0

1

45

0

1

56

1

25

23

0

25

45

0

25

56

0

Voici un exemple de ma table, et je veux sélectionner room_id WHERE :

"user_id = 23 AND del = 0" (del of the row where user_id=23) 

ET

"user_id = 45 AND del = 0" (del of the row where user_id=45) 

ET

"user_id = 56 AND del = 0" (del of the row where user_id=56) 

La requête ne doit renvoyer que room_id = 25 Comment puis-je réaliser cela avec PHP ou CodeIgniter ?

J'ai essayé de l'utiliser et ça ne marche pas :

$this->db->select()
->from('table')
->where(['user_id' => 23, 'del' => 0])
->where(['user_id' => 45, 'del' => 0])
->where(['user_id' => 56, 'del' => 0])
->get()->result_array();

*Remarques : cela a fonctionné lorsque j'ai essayé d'utiliser des tables jointes sur la même table, mais lorsque j'ai 10 tables jointes, cela a fonctionné. user_id (joindre la même table 10 fois), la requête s'exécute très lentement (car il s'agit d'une grande table avec près d'un million de lignes).

Merci d'avance.

0voto

basha04 Points 529

Une approche plus simple serait :

SELECT room_id
FROM table_tbl
WHERE user_id  in (23,45,56) AND del = 0 
GROUP BY room_id
HAVING COUNT(*) = 3 ;

Démonstration : https://www.db-fiddle.com/f/7yUJcuMJPncBBnrExKbzYz/60

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X