Selection et tri sur 2 tables quasi identiques

Selection et tri sur 2 tables quasi identiques - SQL/NoSQL - Programmation

Marsh Posté le 29-04-2011 à 02:04:33    

Bonjour/bonne nuit,
 
J'ai deux tables dans ma base de données, qui contienne quasi le même type de données (juste le nom d'une colonne qui change, et une des deux tables a une colonne en plus), avec toutes les deux un champ date.
J'aimerai pouvoir tout récupérer et trier ça par date, j'ai essayé un :

Code :
  1. SELECT id,id_user,content,id_category,id_station,creation_date
  2. FROM `comment`
  3. UNION ALL
  4. SELECT id,id_user,comment,id_category,id_station,creation_date,ville
  5. FROM `tag`
  6. WHERE comment != ""
  7. ORDER BY creation_date DESC
  8. LIMIT 0 , 30


Sauf qu'il veut pas, car il y a pas le même nombre de colonnes.
Aussi après faudra que je fasse une jointure avec d'autres tables notamment pour récupérer le login correspondant à id_user, je place ça comment?
 
Merci.  :)  

Reply

Marsh Posté le 29-04-2011 à 02:04:33   

Reply

Marsh Posté le 29-04-2011 à 06:58:26    

SELECT id,id_user,content,id_category,id_station,creation_date,'pwet' as ville
FROM `comment`
UNION ALL
SELECT id,id_user,comment,id_category,id_station,creation_date,ville
FROM `tag`
WHERE comment != ""
ORDER BY creation_date DESC
LIMIT 0 , 30
 
 
et pour la jointure,  
 
SELECT login, truc,bidule
from comment inner join user on user.id_user = comment.id_user


---------------

Reply

Marsh Posté le 29-04-2011 à 13:16:26    

Merci, mais du coup, comme dans la table user il y a une colonne qui s'appelle creation_date aussi, il me sort une erreur "#1052 - Column 'creation_date' in field list is ambiguous".
J'ai essayé un ORDER BY comment.creation_date DESC mais ça marche pas. [:transparency]

Reply

Marsh Posté le 29-04-2011 à 13:45:41    

http://dev.mysql.com/doc/refman/5.0/en/union.html
 
To use an ORDER BY or LIMIT clause to sort or limit the entire UNION result, parenthesize the individual SELECT statements and place the ORDER BY or LIMIT after the last one. The following example uses both clauses:
 
(SELECT a FROM t1 WHERE a=10 AND B=1)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2)
ORDER BY a LIMIT 10;


---------------

Reply

Marsh Posté le 29-04-2011 à 15:32:42    

Merci, ça marche.  :jap:

Reply

Marsh Posté le 29-04-2011 à 15:35:14    

lire la doc est souvent un bon point de départ ;)


---------------

Reply

Marsh Posté le 29-04-2011 à 16:08:59    

Ouais, mais j'étais un peu perdu là.  :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed