SQL-запрос MYSQLI по нескольким таблицам завершился неудачно - PullRequest
0 голосов
/ 25 марта 2012

Я очень новичок в SQL, и мне нужно получить ряд атрибутов из разных таблиц, но. Я ищу изображения и информацию о пользователе, ища их под своим именем.

Например:

SELECT * FROM table1 WHERE name LIKE '%tim%' AND last_name '%smith%'

Мне нужны следующие атрибуты в моем результате:

Мне понадобятся все детали из таблицы 1

.

идентификатор учетной записи и изображение из таблицы 2

путь из таблицы 4

Я пытался

SELECT table1.id table1.name table1.last_name table 2.account_id table4.path FROM table1 table 2 table4 WHERE table4.image_id = table 2.image AND table1.first_name LIKE '%tim%' AND table1.last_name LIKE '%smith%'

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

Надеюсь, кто-нибудь может указать мне правильное направление? Ниже приведен пример моих таблиц, заранее спасибо!

table1
------------
id (pk)
name
last_name

table 2
--------------
account id (pk)
id (fk)
image (holds image id from table 4)

table 3
-----------------
account id (fk)
image id (fk)
date

table 4
--------------------
image id (pk)
path
date

Ответы [ 2 ]

2 голосов
/ 25 марта 2012

Попробуйте с этим:

SELECT t1.*, t2.account_id, t4.path
  FROM table1 t1
       INNER JOIN table2 t2 ON t2.id = t1.id
       INNER JOIN table4 t4 ON t4.image_id = t2.image
2 голосов
/ 25 марта 2012

Итак, у вас есть INNER JOIN с между table1 & table2 и между table2 & table4. В MySQL JOIN неявно означает INNER JOIN.

SELECT
  table1.id,
  table1.name,
  table1.last_name,
  table2.account_id,
  table4.path
FROM
  table1
  JOIN table2 ON table1.id = table2.id
  JOIN table4 ON table2.image = table4.image_id 
WHERE table1.name LIKE '%tim%' AND table1.last_name LIKE '%smith%'

( Редактировать : Забыл добавить в исходное предложение WHERE.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...