2014-01-23 3 views
-2

У меня есть система под названием «кошелек системы», которая имеет базу данных с тремя таблицами, как показано ниже:MySQL запросов присоединиться запрос из трех таблиц

лиц:

  1. wmembers (участников бумажник): идентификатор, имя пользователя , пароль, адрес электронной почты, город и т.д.
  2. WDATA: идентификатор, УЖР, облигации, bondvalue:
  3. y2014: идентификатор, FNo, дата, статус, связь города ДНО

Отношения:

  1. wdata.wid является внешним ключом для таблицы wmembers (wmembers.id)
  2. wdata.bond имеет отношение с y2014.fno
  3. wdata.bondval имеет отношение с y2014.bond

Я хочу, чтобы выбрать все данные wdata для указанного wid, а затем искать в y2014 если они exisit перечислить их

$q=mysql_query("SELECT * FROM wdata1 as a, `y2014` as b 
     WHERE a.bvalue = '$pbond' and a.wid='$wid' 
     and b.bond='$pbond' and a.bond = b.fno and a.bvalue = b.bond"); 
+0

Не могли бы вы попытаться форматировать/перефразировать свой вопрос, чтобы отношения были более ясными? –

+0

Каждый раз, когда у вас есть таблица под названием 'something_number', сигнальные колокола должны начинать звонить по дизайну. – Strawberry

ответ

0

Я не понимаю ваш вопрос четко. Попробуйте что-то вроде этого

SELECT 
m.id,username,password,email,city, 
w.id,wid,w.bond,bondvalue, 
y.id,fno,date,status 
FROM 
wmember m 
INNER JOIN wadat w ON m.id = w.wid 
INNER JOIN y2014 y ON m.bond = y.bond 
WHERE wid = 1 

Надеясь соотношение между wmember и wadat является WID из wadat является идентификатор в wmember. Если отношение не является правильным обновлением ВКЛЮЧЕНО части в запросе

ON m.id = w.wid

Для правильного отношения. И если есть несколько полей должны быть связанными использовать и как что-то вроде этого

НА m.id = w.wid И m.name = w.name

См: mysql-using-joins

0

Я пытаюсь перефразировать ваш вопрос, и я подам ответ ...

Если у вас есть все записи из WDATA, что имеет, по меньшей мере, одну связанную запись в таблице y2014 использовать этот запрос

SELECT * 
FROM wdata AS w 
INNER JOIN y2014 as y 
    ON w.bond = y.fno 
     AND w.bondval = y.bond 
WHERE w.wid = $wid 

в противном случае, если вы хотите, чтобы все записи WDATA с соответствующими записями (если существует) y2014 попробовать это

SELECT * 
FROM wdata AS w 
LEFT JOIN y2014 as y 
    ON w.bond = y.fno 
     AND w.bondval = y.bond 
WHERE w.wid = $wid 

Может быть, мое условие соединение не то, что вы хотите проверить это, пожалуйста

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