Alexellpro
@Alexellpro
Музыкант, программист, вебмастер

Как сделать выборку из трех таблиц одной БД?

Добрый день.
Ранее не сталкивался со сложными SQL запросами, но мне сказали что задачу скорее всего получится сделать SQL запросом.
Есть 3 таблицы, в которых нас интересуют следующие колонки:
  • tblhosting.user_id
  • tblhosting.packageid
  • tblhosting.regdate
  • tblhosting.termination_date
  • tblhosting.dedicatedip
  • tblhosting.assignedips
  • tblclients.firstname
  • tblclients.lastname
  • tblclients.email
  • tblclients.phonenumber
  • tblproducts.packagename


Нужно получить записи из tblhosting тех, у кого tblhosting.domainstatus="Terminated" и tblhosting.packageid = "1", "2" или "3". Далее по колонке tblhosting.user_id находим инфу клиента в tblclients (tblhosting.user_id = tblclients.id) и берем еще несколько колонок. Напоследок берем tblproducts.packagename по tblhosting.packageid = tblproducts.id. Все это можно вывести как одну табличку.

Из этого всего я сделал только концовку и то не уверен, что правильно:
WHERE tblhosting.domainstatus="Terminated" AND tblhosting.packageid IN ('1', '2','3');

А насчет логики работы JOIN мне пока не понятно, все запросы, которые я пытался сделать - вообще не работали.
Буду благодарен за помощь.
  • Вопрос задан
  • 8768 просмотров
Решения вопроса 1
Maksclub
@Maksclub
maksfedorov.ru
SELECT hosting.user_id, client.name, client.email, client.phonenumber, product.packagename

FROM tblhosting hosting
LEFT JOIN tblclients client ON client.id=hosting.user_id
LEFT JOIN tblproducts product ON product.id= hosting.packageid

WHERE hosting.domainstatus = 'Terminated'
AND hosting.packageid IN ('1' , '2' , '3')


А насчет логики работы JOIN мне пока не понятно, все запросы, которые я пытался сделать - вообще не работали.
Пишите сначала один селект, потом присоединяете таблицу, потом в выборку добавляете данные с новой таблице и так по чуть-чуть усложняете запрос....
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Делается это через JOIN, другие варианты либо громоздкие, либо просто сложно понимаемые.

Рассматривайте JOIN как "присоединение" одной таблицы к другой (упрощенно).

SELECT {что-то*} FROM {первая таблица} LEFT JOIN {название второй таблицы} ON {какое-то значение первой таблицы} = {какое-то значение второй таблицы}

* тут указываются столбцы как из первой таблицы, так из второй/третьей/итд, так как выборка будет производиться из результирующей таблицы, которая будет содержать все те колонки, которые вы вытаскивали с помощью JOIN.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы