2010-11-30 6 views
0

Ich bin nicht so in MySQL Joins, also vielleicht könnten Sie mir eine Hand geben. Ich habe die folgenden Tabellen bekam:MySQL Frage (Joins)

Table a 
Fields ID,name 

Table b 
Fields aID,cID,ID,found 

Table c 
Fields ID,name 

Das Ergebnis, das ich erhalten möchte, ist der folgende: Ich habe die Datensätze alle wollen, wo b.found = 1. Von diesen Aufzeichnungen will ich nicht a.id oder ein .name, aber ich möchte die Anzahl der Datensätze, die zurückgegeben worden wären, wenn ich das gewollt hätte. Also, wenn es fünf Datensätze gibt, die b.found = 1 und c.id = (zum Beispiel) 3 haben, dann möchte ich einen zurückgegebenen Wert von 5, c.id und c.name.

Jemand ist dazu in der Lage?

Eigentlich ist das, was ich aus der Datenbank erhalten möchten: Eine Liste aller Einträge in der Tabelle C und eine Anzahl von Datensätzen in der Tabelle B, die = 1 und b.c_id = c.id

+1

So möchten Sie c.id, c.name und eine Zählung der Datensätze, die von einem übereinstimmen? – Orbling

+0

Ja, das ist richtig – Simon

+0

Ich denke, Sie möchten nach c.id richtig gruppieren? –

Antwort

2
Table: a 
Fields: ID, name 

Table: b 
Fields: aID, cID, found 

Table: c 
Fields: ID, name 



SELECT c.ID, c.name, COUNT(1) 
FROM b 
JOIN c ON c.ID = b.cID AND b.found=1 
GROUP BY c.ID 
0

gefunden SELECT COUNT (*), c.id, c.name FROM A, B, C WHERE a.id = baid UND c.id = baid UND b.found = 1 und = c.id idThatIAmSearchingFor

Entschuldigung, wenn ich die Syntax nicht genau verstanden habe, aber ich glaube, das ist die Grundstruktur, die Sie wollen. Die Funktion COUNT gibt die Anzahl der von der Abfrage gefundenen Zeilen zurück.

-1

SELECT COUNT (*) als Graf, c.id, c.name von B kommen eine auf a.id = b.a_id WHERE b.found = 1 GROUP BY c.Id;

COUNT gibt die Anzahl der Datensätze in jeder Gruppe von GROUP BY zurück.

+0

NOT WORKING: SQL erkennt Spalten nicht von Tabelle c – Simon

0

Etwas wie:

SELECT count(`c`.*), 
      `c`.`id`, 
      `c`.`name` 
    FROM `b` 
    JOIN `c` 
    ON `c`.`id` = `b`.`c_id` 
WHERE `b.found` = 1 
+0

FUNKTIONIERT NICHT: Gibt einen mysql Fehler, (COUNT (c. *) funktioniert nicht ich denke) – Simon

1
SELECT c.id, c.name, COUNT(*) 
    FROM c 
     INNER JOIN b 
      ON c.id = b.c_id 
       AND b.found = 1 
    GROUP BY c.id, c.name 
+0

Ich denke, ich stimme Ihnen zu. Ich bin mir immer noch nicht sicher, ob ich die Anforderungen verstehe –

0

Ich denke, das die erforderliche Leistung liefern würde -

select count(*), b.cID, c.name from b 
inner join c on c.id=b.cID and b.found=1 
group by b.cID