簡體   English   中英

MYSQL PHP將表值添加為行

[英]MYSQL PHP add table values as rows

我正在嘗試加入2個MySQL表,但是我無法在線上使用示例幫助自己。

dat_eb_field_values 3行:registrant_id,field_id和field_value。

我的第二個表: dat_eb_registrants包含普通行,例如user_id,first_name,last_name等。

我正在嘗試將這兩個表放在一起,以便可以像dat_eb_registrants的其他值一樣使用row: dat_eb_registrants

當前,我正在使用以下方法,但是由於未連接查詢,因此無法對表dat_eb_field_values的輸出進行排序。

$result = mysql_query("SELECT user_id,first_name,last_name,email FROM `dat_eb_registrants`") 
while ($row = mysql_fetch_row($result)) {

    $result1 = mysql_query("SELECT field_value FROM field_values WHERE (field_id = 53) AND (user_id = $row[0])"); $r1 = mysql_fetch_row($result1); echo $r1[0];
    echo $row[2];
    $result2 = mysql_query("SELECT field_value FROM dat_eb_field_values WHERE (field_id = 54) AND (user_id = $row[0])"); $r2 = mysql_fetch_row($result2); echo $r2[0];
}

這樣結束....

也許只是使用聯接? 請嘗試以下查詢:

SELECT users.user_id, users.user_name, users.user_email, field_values.field_value 
FROM users LEFT JOIN field_values ON users.user_id=field_values.user_id

您也可以在其后面附加一個WHERE子句,例如:

WHERE field_values.field_id='53'

如果您需要有關JOIN的更多說明,請參考以下出色答案: https : //stackoverflow.com/a/5874895/586859

運行此命令時,您可以照常循環瀏覽結果,但是所有值都應包含在一個位置。

怎么樣:

select * from users join field_values using( user_id ) where field_id in (53,54);

JOIN可以在這里為您提供幫助:

SELECT u.user_id,u.user_name,u.user_email,f.field_value FROM users u LEFT JOIN field_values f ON f.field_id=u.user_id

這是假設field_iduser_id匹配

我想你想要的就是這樣

select u.*, v1.field_value as field_53, v2.field_value as field_54 
from users u 
join values as v1 on v1.user_id = u.user_id AND v1.field_id = 53 
join values as v2 on v2.user_id = u.user_id AND v2.field_id = 54;

我相信這雖然是兩次聚會,而且非常恐怖。

就像每個人都說過的那樣, INNER JOIN無疑是您所追求的,並且看起來像是雙重INNER JOIN

為了加快執行任何結果的速度,請確保索引要連接的列。 這可以將30秒的查詢更改為0.3秒的查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM