2016-04-22 8 views
1

Ich habe ein Problem. Ich mache jetzt ein Privates Nachrichtensystem, und ich muss Benutzer und seine Ranginfo erhalten, um es auf dem Bildschirm zu drucken. Also muss ich JOINInformationen über zwei Benutzer mit JOIN erhalten

SELECT 
    private_messages.from as `from`, 
    private_messages.to  as `to`, 
    private_messages.theme as `theme`, 
    private_messages.date as `date`, 
    private_messages.message as `message`, 
    users.username   as `username`, 
    users.id     as `user_id`, 
    private_messages.id  as `pm_id`, 
    ranks.style    as `style`, 
    ranks.rank_name   as `rank_name` 
FROM `private_messages` 
LEFT JOIN `users` ON private_messages.from = users.id 
LEFT JOIN `ranks` ON users.rank   = ranks.id 
WHERE private_messages.id=? LIMIT 1 

Aber das Problem ist, dass ich nur Informationen über Benutzer erhalten ‚aus‘ (die eine Nachricht gesendet) und dont get Rang und andere Dinge über Benutzer ‚zu‘ (die eine Nachricht empfangen wird) und Ich brauche auch seine Informationen und weiß nicht, was ich tun soll. Kann mir jemand helfen? :)

+0

Vielleicht können Sie etwas wie 'LEFT JOIN Benutzer ON private_messages.from = users.id ODER private_messages.to = users.id' – Ahmad

+0

Immer noch nur einen Benutzer :) – Danielius

Antwort

1

Wenn Sie über zwei Benutzer infor wollen Sie zwei Mal die Tabelle Benutzer eine für user_from eine eine für user_to kommen muss ...

dies ist nur ein Vorschlag für Informationen für zwei Benutzer bekommen

SELECT 
    private_messages.from as `from`, 
    private_messages.to as `to`, 
    private_messages.theme as `theme`, 
    private_messages.date as `date`, 
    private_messages.message as `message`, 
    users.username as `username`, 
    users_to.username as `username_to` 
    users.id as `user_id`, 
    private_messages.id as `pm_id`, 
    ranks.style as `style`, 
    ranks.rank_name as `rank_name` 
    FROM `private_messages` 
    INNER JOIN `users` ON private_messages.from = users.id 
    INNER JOIN `users` as user_to ON private_messages.to = users.id 
    LEFT JOIN `ranks` ON users.rank = ranks.id 
    WHERE private_messages.id=? LIMIT 1 
+0

immer noch nicht funktioniert :(Ich habe versucht, so etwas – Danielius

+0

bitte zeigen Sie den Fehler der erklären wath Sie Männer mit "funktioniert nicht" .. – scaisEdge

+0

irgendein Fehler, nur array === false wenn private_messages.id! = 1 Ich weiß nicht warum. und immer noch nur 1 Benutzer Info:/ – Danielius

Verwandte Themen