2016-02-23 3 views
2

Итак, я пытаюсь выбрать некоторые данные из 4 таблиц, используя запрос, который я попытался выполнить вместе.Multi-Table, Multi-WHERE и SELECT запрос MySQL

SELECT * 
FROM cards 
LEFT JOIN cards_viewers ON cards.card_id = cards_viewers.card_id 
    (SELECT * 
    FROM folders 
    WHERE folder_id = cards.card_folderID) 
    (SELECT user_firstName, 
      user_lastName, 
      user_avatar 
    FROM user_data 
    WHERE user_id = cards_viewers.user_id) 
WHERE cards_viewers.user_id = '.$u_id.' 
ORDER BY cards.card_lastUpdated DESC 

В основном, запрос выбирает данные из четырех таблиц в зависимости от user_id в таблице user_data. Я попытался изначально извлечь все данные из таблиц cards и cards_viewers и продолжал использовать эти данные для выбора значений из других таблиц (user_data и folders).

Запрос неверный, я знаю это. Я изучил большинство базовых MySQL, но я все еще борюсь с более сложными запросами, такими как тот, который я пытаюсь написать сейчас. Какой запрос я могу использовать для выбора данных, которые я хочу?

Ссылки на любую документацию по частям запросов окажутся очень полезными, помогая мне научиться создавать запросы в будущем, а не просто полагаться на StackOverflow.

Большое спасибо.

+1

Я не понимаю вашу проблему. Почему бы вам не 4 раза присоединиться? – Asur

+0

Вы могли бы написать пример запроса? –

+0

Это то, что вы ищете? Присоединиться ко всем четырем таблицам? – Asur

ответ

1

Вам не нужно «MULTI-WHERE», но несколько соединений, вам просто нужно продолжать делать соединения, пока не получите нужные вам таблицы.
Вот пример:

SELECT * 
FROM cards LEFT JOIN cards_viewers 
ON cards.card_id = cards_viewers.card_id 
LEFT JOIN folders 
ON folders.folder_id = cards.card_folderID 
LEFT JOIN user_data 
ON user_id = cards_viewers.user_id 
WHERE cards_viewers.user_id = '.$u_id.' 
ORDER BY cards.card_lastUpdated DESC 

Обычаю поля, которые вы хотите, чтобы просто изменить * для имени поля, внимательно следя за ambiguous column naming.
Для получения дополнительной информации проверьте MySql Joins. Надеюсь, это помогло вам :)

+0

Отлично, отлично! Благодаря :) –