簡體   English   中英

MySQL-使用INNER JOIN錯誤從2個表中進行SELECT列

[英]Mysql - SELECT columns from 2 tables using INNER JOIN error

這應該是一個基本問題,但是我已經很長時間沒有使用Mysql了,並且忘記了所有基本知識。 所以程序員請多多包涵。

我有2張桌子,像這樣:

表1(事件): 此處

表2(用戶): 此處

我想在事件表中選擇其中event_invitees包含用戶名的所有行。 我能夠使用以下方法執行此操作:

SELECT * FROM meetmeup_events WHERE event_invitees LIKE '%$username%'

現在,我還要從用戶表中選擇event_invitees的照片(列名為user_userphoto )。 我的嘗試是這樣的:

$result = mysql_query("SELECT meetmeup_events.*, meetmeup_user.user_photo 
                       FROM meetmeup_events 
                       WHERE event_invitees LIKE '%$username%' 
                       INNER JOIN meetmeup_user 
                          ON meetmeup_user.user_username = meetmeup_events.event_inviter");

$rows = array();
   while($r = mysql_fetch_assoc($result)) {
     $rows['meetmeup_user'][] = $r;
   }

 echo json_encode($rows);

這給了我一個錯誤: mysql_fetch_assoc():提供的參數不是有效的MySQL結果資源

我怎樣才能做到這一點? 我想念什么? 能給我一些例子嗎?

提前致謝! 我一定會接受有效的答案!

只是以正確的順序編碼查詢即可,您可能希望通過使用別名作為表名來使其更易於管理

嘗試這個 :-

SELECT me.*, 
       mu.user_photo 
FROM meetmeup_events me
   INNER JOIN meetmeup_user mu ON mu.user_username = me.event_inviter
WHERE me.event_invitees LIKE '%$username%' 

當然,這假定所有列名都是正確的,並且mu.user_username = me.event_inviter實際上是mu.user_username = me.event_inviter ,因為這些字段實際上是相等的

其他建議您實際上並不是在發出要由mysql執行的查詢。

您必須這樣做:

$sql = "SELECT me.*, 
           mu.user_photo 
        FROM meetmeup_events me
           INNER JOIN meetmeup_user mu ON mu.user_username = me.event_inviter
        WHERE me.event_invitees LIKE '%$username%'";

$result = mysql_query($sql);

$rows = array('mysql_count' => mysql_num_rows($result) );

while($r = mysql_fetch_assoc($result)) {
    $rows['meetmeup_user'][] = $r;
}

echo json_encode($rows);

現在,使用javascript調試器在瀏覽器中查看返回的數據。 即使沒有'meetmeup_user'數組,也至少應有一個mysql_count字段;如果該字段為零,則說明使用您的條件找不到任何內容。

您應該將mysql函數更改為mysqli / PDO,盡管問題似乎出在查詢itef上。 應該:

SELECT meetmeup_events.*, meetmeup_user.user_photo 
FROM meetmeup_events 
INNER JOIN meetmeup_user 
ON meetmeup_user.user_username = meetmeup_events.event_inviter
WHERE event_invitees LIKE '%$username%' 

(末尾的WHERE子句)

SQL Fiddle演示: http ://sqlfiddle.com/#!2/852a2/1

暫無
暫無

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

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