Are two selects needed?

mysql, sql

Solution

SELECT  CASE WHEN a.FromID = 'yourIDHere' 
                THEN c.Name
                ELSE b.Name
        END Name,
        CASE WHEN a.FromID = 'yourIDHere' 
                THEN c.Age
                ELSE b.Age
        END Age,
        a.VisitTime,
        CASE WHEN a.FromID = 'yourIDHere' 
                THEN 'You'
                ELSE 'Friend'
        END DirectionOfVisit
FROM    Visit a
        INNER JOIN UserProfile b
            ON a.FromID = b.Uid
        INNER JOIN UserProfile c
            ON a.ToID = c.Uid
WHERE   'yourIDHere' IN (a.FromID, a.ToID)
ORDER   BY a.VisitTime

Brief Explanation:

The query will display the name of your friend you visited or who have visited you and will also display the direction of the visit. When it displays `You`, it means that you have visited your friend's profile, otherwise it will display `Friend` if the friend have visited you.

- SQLFiddle Demo

Problem

I have a table: ``` Visit (FromId, ToId, VisitTime) ``` where FromId and ToId are FKs to table ``` UserProfile (uid, name, age ...) ``` As a user with my UID I want to select all profiles I have visited or who visited me in one result set ordered by VisitTime and with the indication of the "direction of the visit". Is it possible to do it using only one MySQL query?

Original source