sql >> Databasteknik >  >> RDS >> Mysql

Kombinera två bord med sql JOIN?

Du måste gruppera efter något eller aggregatet GROUP_CONCAT() kommer att samla alla rader i en:

GROUP BY  tour_foreign.id 

Använd:

$query = $this -> db -> query('
    SELECT
       @rownum := @rownum + 1 rownum,
       tour_foreign.id, 
       tour_foreign.name, 
       MIN(tour_foreign_residence.name_re) AS name_re, 
       tour_foreign.service, 
       tour_foreign.date_go, 
       tour_foreign.date_back, 
       tour_foreign.term,
       tour_foreign.useradmin_submit,
       tour_foreign.date_submit,
       GROUP_CONCAT( tour_foreign_residence.name_re 
                     ORDER BY tour_foreign_residence.name_re 
                     SEPARATOR " $ "
                   ) AS name_re_all
    FROM   tour_foreign 
      INNER JOIN tour_foreign_residence 
        ON ( tour_foreign.id = tour_foreign_residence.relation )
      JOIN (SELECT @rownum := 0) r
    WHERE  tour_foreign.name LIKE "%' . $find . '%" 
        OR tour_foreign_residence.name_re LIKE "%' . $find . '%"
    GROUP BY  tour_foreign.id ');


  1. Varför är vissa typer av förberedda frågor som använder PDO i PHP med MySQL långsamma?

  2. Lätt inköpsäventyr

  3. På effekten av helsida skriver

  4. Skillnaden mellan VARCHAR2(10 CHAR) och NVARCHAR2(10)