SQL select innerhalb inner joins
Meine Frage ist: Wie kommen die verschiedenen Werte in einer sql-Abfrage? Ich versuche dieses:
SELECT
q.id,
q.question_title,
SUM(op.option_value) AS total_votes,
COUNT(op.option_value) AS number_votes,
tab.comments
FROM
questions_options AS op
INNER JOIN questions AS q
ON (q.id = op.q_id)
INNER JOIN
(SELECT
SUM(p.unseen) AS comments
FROM
questions_options AS p) tab
ON (q.id = tab.q_id)
WHERE op.option_value > 0
GROUP BY q.question_title
Diese Abfrage funktioniert perfekt, Wenn ich entfernen Sie die mittlere "INNER JOIN" (ich.e zeigt mir die id, Frage, Titel, Summe der abgegebenen Bewertung, und die Anzahl der Stimmen....
Aber ich will zeigen, unsichtbare Kommentare auch, das ist ein weiteres Feld in der Tabelle und nimmt die "1" für die unsichtbaren (ungelesen) Kommentar...
Also, wie kann ich dies tun, indem Sie unsichtbare Kommentare Nummer....jede Idee oder Vorschläge...
- Sie beseitigt haben, die q_id Feld aus der Unterabfrage mit dem Namen "tab", so natürlich Sie können nicht beitreten, auf diesem Feld mehr. Sie wollen wahrscheinlich
(select sum(p.unseen), p.q_id from questions_options as p group by q_id) tab
- hi....ja du hast Recht..es zeigen einige Ergebnis...aber 2 für alle Felder, ich will nur für diejenigen Felder, die un-Kommentare Lesen...danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke Judge Mental richtig ist.
Sollten Sie den "q_id" - Feld in der Unterabfrage in der Lage sein, um eine innere Verknüpfung zu "tab.q_id".
-Erläuterung-
Ihre erste
INNER JOIN
sieht wie folgt aus:SELECT * FROM questions_options AS op INNER JOIN questions AS q ON (q.id = op.q_id)
..also im Grunde die Beziehung (und join) zwischen den beiden Tabellen basiert auf
questions.id
undquestions_options.q_id
.Gut, es ist die gleiche Geschichte für Sie Unterabfrage.
In deiner Unterabfrage definieren Sie eine SELECT-Anweisung AUS "questions_options",
die werden nur die Spalten/Felder, die Sie nach Ihren WÄHLEN Sie.
(SELECT SUM(p.unseen) AS comments FROM questions_options AS p) tab
Lage sein, beliebige Daten verwenden, die von Ihnen Unterabfrage, müssen Sie
SELECT
diequestions_options.q_id
Feld und stellen Sie eine Verknüpfung mit derquestions.id
Feld bereitsin Ihrem Haupt-Abfrage.
(SELECT p.q_id, SUM(p.unseen) AS comments FROM questions_options AS p) tab
INNER JOIN (...subquery...) ON (q.id = tab.q_id)
So
tab.q_id
bezieht sich auf diep.q_id
Sie in der Unterabfrage.Ich weiß nicht, ob ich richtig bin, aber ich habe etwas gefunden hier.
Wenn u Lesen-OP die Abfrage wieder und wieder U bekommen, um zu wissen, dass es keine Notwendigkeit für die zweite "inner join".
Sie können auch
sum(p.unseen) as comments
im erstenselect
selbst, wie es ist auch zu Fragen, aus derquestions_options
Tabelle auf der basis von f.id = tab.q_id, which by itself comes in the first inner join between
Fragenand
questions_options`.Hoffe es hilft dir.