2016-08-09 2 views
1

Из-за того, что я выполняю левое соединение, которое иногда не доставляет результата, идентификатор моей «первой» таблицы каким-то образом устанавливается в 0. Теперь я хочу дважды выбрать идентификатор , и сделать копию неизменной, чтобы я мог получить к ней доступ даже в случае сбоя соединения.Выделите одну и ту же строку дважды и сделайте копию неизменной

Вот мой запрос:

SELECT * FROM table1 
LEFT JOIN table2 ON table1.ID = table2.ID 
LEFT JOIN table3 ON table1.ID = table3.ID 

Каждая строка в table1 имеет только один и тот же идентификатор в любой table2 или Table3, поэтому для каждой строки, один из этих двух объединений будет «глючить». Вот что я получаю в результате (Mock результат):

+------+------------+------------+------------+------------+------------+------------+ 
| ID | Table1Col1 | Table1Col2 | Table2Col1 | Table2Col2 | Table3Col1 | Table3Col2 | 
+------+------------+------------+------------+------------+------------+------------+ 
| NULL | Something | Something | NULL  | NULL  | Something | Something | 
| NULL | SomeValue | SomeValue | Something | Something | NULL  | NULL  | 
+------+------------+------------+------------+------------+------------+------------+ 

То, что я хочу добиться: Keep "ID" от того, NULL.

(Также, выбрав "table1.ID в MyID, *" дает мне SQL Error)

(Выбор значения явно не может быть речи по конструктивным причинам)

+0

Какая ошибка вы можете включить? –

+0

Я думаю, что «неизменный» не является правильным словом, так как '*' просто предоставит одно поле ID, которое может быть неправильным. Предоставление сообщения об ошибке было бы полезным. – Jakumi

ответ

2

Следующий запрос должен работы , называя поля явно ...

SELECT table1.ID, table1.Table1Col1, table1.Table1Col2, 
     table2.Table2Col1, table2.Table2Col2, 
     table3.Table3Col1, Table3.Table3Col2 
FROM table1 
LEFT JOIN table2 ON (table1.ID=table2.ID) 
LEFT JOIN table3 ON (table1.ID=table3.ID) 

обновление для групповых символов: Вы должны предоставить таблицу, когда * не только выбрать «colu млн».

Остерегайтесь, что одинаковые столбцы будут отображаться несколько раз таким образом, чтобы любые процессы, вероятно, ожидали этого результата. В PHP, например, я верю, что последнее значение выигрывает (если доступно по имени столбца).

+0

Да, если бы я мог назвать их явно, то есть. Я забыл упомянуть в своем посте, но будущий веб-администратор должен иметь возможность добавлять таблицы или столбцы, не изменяя код запроса. (Это может показаться немного странным, но при использовании «*» он работает полностью нормально) – user2065501

+0

хорошо, что это не работает полностью нормально, или вы не зададите вопрос? ^^. Отправьте сообщение об ошибке, которое вы получили при попытке переименования. – Jakumi

+0

Ну, я имел в виду все остальное, но да, вы правы: P. Я бы опубликовал ошибку, если это что-то значило. Я получаю сообщение «У вас есть ошибка в синтаксисе SQL рядом с« * FROM ... »'. Или я слишком глуп, чтобы правильно использовать MySQL. Я не знаю. – user2065501

Смежные вопросы