2011-06-08 2 views
1

Je n'arrive pas à comprendre comment obtenir les données requises de ma table. La requête que j'ai écrit montre un sous-requête en disant d'erreur retourne plus d'une ligne ..SQl Requête pour récupérer des données

SELECT name 
FROM `business` 
WHERE id = (
SELECT business_id 
FROM bill 
WHERE id = (
SELECT bill_id 
FROM bill_schedule 
WHERE show_bill = 1) 

Ici, le sous-requête pour bill_schedule retourne plus d'une ligne, où show_bill est une colonne booléenne. Tout ce que je veux ici est d'afficher le « nom » de l'entreprise dont show_bill est réglé sur 1.

Répondre

0
SELECT `name` 
FROM `business` 
WHERE id in (
SELECT business_id 
FROM bill 
WHERE id in (
SELECT bill_id 
FROM bill_schedule 
WHERE show_bill = 1) 
+0

Mon mauvais! Ça a marché. Merci, c'était une erreur idiote que j'ai faite – Varun

0

Étant donné que la sous requête est de retour sur plusieurs lignes, vous ne pouvez pas utiliser un opérateur d'égalité

Juste changez le = à IN dans votre clause where:

SELECT name 
FROM `business` 
WHERE id IN (
SELECT business_id 
FROM bill 
WHERE id IN (
SELECT bill_id 
FROM bill_schedule 
WHERE show_bill = 1) 
Questions connexes