webew
Войти » Регистрация
 
PHP

Подстановка значени из таблицы sql

31 октября 2016, 18:34
Автор: lipkiy
Здравствуйте, смею задать вопрос..
Есть 2 таблицы SQL - mass и company
В company есть id, name....
В mass id, org......
В mass добавляются сообщения которые привязаны к компаниям (берутся из company.name)

Реализовано выпадающим списком, где вижу company.name а в поле подставляется company.id

echo "<select name=\"morg\">";
$sql = "SELECT name, id FROM company";
$result_select = mysql_query($sql);
while($object = mysql_fetch_object($result_select)){
echo "<option value = '$object->id' > $object->name </option>";
}
echo "</select>";


после добавления сообщения, формирую список сообщений:

$query = "SELECT id, data, org, wks, hour, job, mass FROM mass";
$res = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_array($res)) {
    echo "<tr>\n";
    echo "<td>".$row['id']."</td>\n";
    echo "<td>".$row['data']."</td>\n";
    echo "<td>".$row['org']."</td>\n";
    echo "<td>".$row['wks']."</td>\n";
    echo "<td>".$row['hour']."</td>\n";
    echo "<td width=\"40%\">".$row['job']."</td>\n";
    echo "<td width=\"40%\">".$row['mass']."</td>\n</tr>\n";
}
echo ("</table>\n");

Где org - это id компании к которой относится сообщение.

Вот как мне вместо id (org) получить имя организации, которое будет сопоставляться с id из company и при совпадении подставлять name?
Думал в сторону join? но тогда трубуются уникальные имена столбцов или общие столбцы, а у меня id mass и id company не имеют ничего общего. Каждый из id просто несёт в себе номер записи.

Подставлял вместо id сразу название, которое хранилось непосредственно полным именем организации, но это ужас какой-то, а не решение..
А так же имею фильтр вывода по организациям в общем списке сообщений.
И в дальнейшем если организацию переименовать, то новые сообщения будут добавляться как новая организация и старые сообщения в фильтр не попадут...
В случае с id эта проблема уходит + экономия символов, соответственно прирост скорости отбора.

Добавить комментарий
Отображение комментариев: Древовидное | Плоское

paulus

JOIN должен нормально работать. Что-то такое:

SELECT id, data, company.name, wks, hour, job, mass FROM mass JOIN company ON company.id = mass.org;
31.10.2016, 23:01
Ответить
NO USERPIC

lipkiy

Column 'id' in field list is ambiguous.
если писать SELECT * ... то мешает все id
то есть вместо id mass ставится id company...
01.11.2016, 00:37
Ответить
NO USERPIC

lipkiy

"SELECT * FROM mass JOIN company ON company.name = mass.org";
Заработало, то есть подставляются имена организаций, но оять же вместо id mass подставляется id company
Возможно как-то выделить id именно от mass в:
   echo "<td>".$row['id']."</td>\n";

??
Но уже, огромное спасибо, на крайний случай переименую id...
01.11.2016, 00:52
Ответить
NO USERPIC

rgbeast

SELECT mass.id, company.id, data, company.name, wks, hour, job, mass FROM mass JOIN company ON company.id = mass.org;
01.11.2016, 01:10
Ответить
NO USERPIC

lipkiy

Подскажите, а как использовать mass.id вместо
echo "<td>".$row['id']."</td>\n";
01.11.2016, 01:22
Ответить
NO USERPIC

lipkiy

Спасибо - всё заработало, теперь буду выборку (фильтр) мучать =)
Заработало:
SELECT mass.id, company.id, mass.data, company.data, company.name, wks, hour, job, mass FROM mass JOIN company ON company.id = mass.org;

Как Вы и писали =)
01.11.2016, 01:38
Ответить
NO USERPIC

rgbeast

Чтобы удобнее было различать, используйте алиасы:
SELECT mass.id AS id, company.id AS id2, mass.data, company.data, company.name, wks, hour, job, mass FROM mass JOIN company ON company.id = mass.org;


Затем внутри PHP: $row['id'] и row['id2']
01.11.2016, 06:33
Ответить
Добавить комментарий
Отображение комментариев: Древовидное | Плоское
© 2008—2017 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100

Реклама: