связи таблиц и вывод

Статус
В этой теме нельзя размещать новые ответы.

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
Никак не могу понять работу связей таблиц.... зачем они и как они работают, особенно когда нужно условие "WHERE"? Какие поля указывать для связей и почему? Помогите разобраться.
А также, как делать вывод из запроса (нескольких таблиц)... как я понимаю, делается также, как и при обычном запросе... да?
 
А также, как делать вывод из запроса (нескольких таблиц)... как я понимаю, делается также, как и при обычном запросе... да?
Да.

Никак не могу понять работу связей таблиц.... зачем они и как они работают
А как без них, если надо выбрать данные из нескольких таблиц?
Чтоб понять надо читать маны и пробовать руками.
 
читал. Только вот про них мало написано и не во всех книгах.
какие поля нужно приравнивать?
И как быть, когда в двух таблицах одинаковые поля (имена полей)? как выводить данные?
 
какие поля нужно приравнивать?
Ты сам то понял свой вопрос? :D
Какие тебе нужны по таким и вяжи, здесь телепатов нет.

И как быть, когда в двух таблицах одинаковые поля (имена полей)? как выводить данные?
Есть названия таблиц, полей и их алиасы.
 
Я имел в виду, что дает связь для поля, как определить, какое поле связывать, чтобы получить определенный результат (а не то, какие именно у меня поля... в общем имею в виду)?
По именам: но вывод то данных как писать? например первый массив занес в переменную result1 и вывожу далее result['name'], а это поле name имеет две таблицы. Как правильно писать-то, как скрипт определит какое поле из какой таблицы выводить?
 
как определить, какое поле связывать, чтобы получить определенный результат
Этого никто не определит кроме тебя (никто не знает структуру таблиц).
Обычно вяжется по полям общим для каждой таблицы.

например первый массив занес в переменную result1 и вывожу далее result['name'], а это поле name имеет две таблицы. Как правильно писать-то, как скрипт определит какое поле из какой таблицы выводить?
использовать алиасы.
 
советую взять какой-то очень простой пример связки двух таблиц - тогда все станет на свои места...
к примеру есть таблица клиенты:
( id - уникальный идентификатор клиента
name - имя
addr - почтовый адрес
)
и есть таблица заказы:
( id - уникальный идентификатор заказа
klient_id - ссылка на id клиента (это и есть связка)
zakaz_name - имя заказа
)

вот и приспичело нам выбрать все заказы определенного пользователя (классическое желание)
select заказы.*, клиенты.zakaz_name, from клиенты, заказы where заказы.klient_id=клиенты.id;

(болдом выделена часть которая отвечает за так вами называемую связку)
означает: выбрать все записи из заказов и одну запись заказы.zakaz_name из таблиц ГДЕ id клиента совпадает с klient_id заказа.

думаю это самый простой вариант. на деле sql запрос выглядит намного больше и непонятнее. Потренироваться можно в php_myadmin.
 
Я так понял ты не понимаешь зачем нужны таблицы где есть связи?
Например:

есть таблица (catalog) где хранится каталог товаров, и там есть поля:
id - первичный ключ,
firm - фирма производитель
name - наименование модели

например таблица (catalog) содержит такие записи:
id firm name
1 Asus Ноутбук Asus бла-бла
1 Acer Ноутбук Acer бла-бла
и т.д.

Допустим в таблице 10 тис. записей.
И нам надо изменить название фирмы производителя (поле firm) Asus на ASSSus, а в таблице записей с Asus 1 тис., то есть нам надо изменить фирму производителя в 1 тис. записей, что естественно гониво.

Что такого не было мы создадим еще одну таблицу firms, где будут храниться фирмы производители:
id - первичный ключ,
firm - фирма производитель

, а таблицу каталог изменим (catalog:(
id - первичный ключ,
id_firm - id из таблицы firms
name - наименование модели


firms:
id name
1 Asus
1 Acer

catalog:
id id_firm name
1 1 Ноутбук Asus бла-бла
1 2 Ноутбук Acer бла-бла

Запрос который связывает две таблицы и выводит данный из них:
select catalog.id, firms.name, catalog.name from catalog,firms where catalog.id_firm = firms.id;

Кстати в книжках по базам данным это все толково написано.
 
Учите мат. часть!
Возмите учебник по БД. Практически в каждом есть объяснения понятия "нормальная форма". Скажу что НФ около 6, щас так не вспомню. Вам, для решения ваших прикладных задач подойдет ЗНФ(третья нормальная форма). Я вам особо объяснять суть не буду, лучше возмите учебник...
 
Никак не могу понять работу связей таблиц.... зачем они и как они работают, особенно когда нужно условие "WHERE"? Какие поля указывать для связей и почему? Помогите разобраться.

поля указываешь те, которые определят какое именно поле из одной таблицы соответсвует полю из другой. например две таблицы - в одной список описаний товаров, в другой список наличия товаров. чтобы получить список описаний и наличия, то объединяй в запросе по уникальному номеру (id) товара.

А также, как делать вывод из запроса (нескольких таблиц)... как я понимаю, делается также, как и при обычном запросе... да?

ага, именно.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху