3 Stimmen

So verwenden Sie eine andere Tabelle als WHERE-Kriterium in SQL

Ich versuche, Fragen zu suchen, die ein bestimmtes Tag haben.

Wie können Sie das folgende Problem lösen?

Tische

questions          |     tags
-------------------|-----------------
  question_id      |     tag
  title            |     question_id
  was_sent_at_time |

Mein Code

    SELECT question_id, title
    FROM questions
    WHERE question_id IN
    ( 
        SELECT question_id
        FROM questions
        ORDER BY was_sent_at_time      // problem here
        DESC LIMIT 50
    ) 
    AND tag IN                         // problem here
    (
        SELECT tag FROM tags
        WHERE tag = $1
        AND WHERE question_id IN (                                                                               
            SELECT question_id
            FROM questions
            ORDER BY was_sent_at_time
            DESC LIMIT 50
        )
    )
    ORDER BY was_sent_at_time
    DESC LIMIT 50;

Ich laufe und hole

Warning: pg_prepare() [function.pg-prepare]: Query failed: ERROR: syntax error at or near "WHERE" LINE 14: AND WHERE question_id IN ( ^ in /var/www/codes/handlers/searches/handle_questions_by_tag.php on line 30

Ich sollte offenbar JOINs verwenden. Ich möchte jedoch keine Tags als Ausgabe für mein Endergebnis erhalten.

0voto

Dan Punkte 102

Wie wäre es damit:

SELECT questions.question_id, questions.title, questions.was_sent_at_time
FROM questions
JOIN tags ON questions.question_id = tags.question_id
WHERE tags.tag = 'whatever'
ORDER BY questions.was_sent_at_time

Dies sollte keine Angaben aus der Tags-Tabelle in der Ausgabe erfordern, obwohl ich dies nicht wirklich getestet habe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X