Я работаю над проектом с использованием процедурного PHP и phpmyadmin с движком InnoDB.Я не разработчик, не профессионал, я просто люблю веселиться с PHP, поэтому имейте это в виду, если я что-то не так (или если вы хотите предложить мне использовать объектно-ориентированный PHP) :).
У меня есть что-то вроде этого (просто и пример, на самом деле у меня много связанных таблиц и полей):
request(id, customer_id, field1, contact_id, field2)
customer(id, customer)
contact(id, contact)
Мне нужно вернуть строку id = 1 в таблице «request» со ссылочными значениями(не с номерами идентификаторов), поэтому мой результат должен быть таким: "Company X", value1, value2, "John".
Я могу получить это с помощью:
SELECT * FROM (
(
SELECT customer.customer
FROM customer
JOIN request ON customer.id=request.customer_id
WHERE request.id=1
) as result1
JOIN
(
SELECT request.field1, request.field2
FROM request
WHERE request.id=1
) as result2
JOIN
(
SELECT contact.contact
FROM contact
JOIN request ON contact.id=request.contact_id
WHERE request.id=1
) as result3
)
(я не знаю, могу ли я опустить "resultX""псевдонимы, но с phpmyadmin мне нужно иметь их, если нет, я получаю ошибку).
Теперь мои вопросы:
1- Это работает, но я чувствую, что это не правильный способ написаниякод, я думаю, что это может быть достигнуто лучше / умнее и с меньшим количеством кода, но я не знаю, как.
2- Как я могу перечислить результаты в другом порядке?Нравится: field2,customer,contact,field1
?Я попытался разделить field1, field2 SELECT и изменить порядок в первой строке следующим образом:
SELECT result2,result1,result4,result3 FROM (
(
SELECT customer.customer
FROM customer
JOIN request ON customer.id=request.customer_id
WHERE request.id=1
) as result1
JOIN
(
SELECT request.field1
FROM request
WHERE request.id=1
) as result2
JOIN
SELECT request.field2
FROM request
WHERE request.id=1
) as result3
JOIN
(
SELECT contact.contact
FROM contact
JOIN request ON contact.id=request.contact_id
WHERE request.id=1
) as result4
)
, но он возвращает: "# 1054 - неизвестный столбец 'result2' в 'списке полей'"
Надеюсь, все понятно, заранее всем спасибо и поздравляю с одной из самых полезных страниц во всем Интернете:)