2016-03-23 8 views
1

Ich möchte zwei Tabellen verbinden, deren Schema wie folgt ist ... !!Wie verbinde ich zwei Tabellen mit Datum und ohne Bedingung?

Table : 

team_posts 

    id 
    team_id 
    text 
    location_name 
    stars_count 
    comments_count 
    created_at 
    updated_at 

team_feed_activites 

    id 
    team_id 
    operation 
    created_at 
    updated_at 

Und die Tabellenwerte sind

team_posts 

id | team_id | text | location_name | stars_count | comments_count |  created_at  |  updated_at 

1 | 23 | crow | india  |  1  |  2  | 2016-03-18 06:30:00 | 2016-03-18 06:30:00 
2 | 24 | bird | india  |  1  |  2  | 2016-03-18 06:30:00 | 2016-03-19 06:30:00 
3 | 25 | span | india  |  33  |  2  | 2016-03-18 06:30:00 | 2016-03-18 06:30:00 
4 | 25 | bang | india  |  3  |  2  | 2016-03-18 06:30:00 | 2016-03-12 06:30:00 
5 | 27 | crow | india  |  1  |  2  | 2016-03-18 06:30:00 | 2016-03-18 06:30:00 
6 | 23 | crow | india  |  1  |  2  | 2016-03-18 06:30:00 | 2016-01-18 06:30:00 
7 | 23 | crow | india  |  7  |  2  | 2016-03-18 06:30:00 | 2016-03-18 06:30:00 
8 | 23 | hen | india  |  1  |  2  | 2016-03-18 06:30:00 | 2016-03-01 06:30:00 
9 | 23 | mani | india  |  1  |  2  | 2016-03-18 06:30:00 | 2016-03-18 06:30:00 
10 | 23 | dog | india  |  1  |  2  | 2016-03-18 06:30:00 | 2016-03-18 06:30:00 
11 | 29 | crow | india  |  10  |  2  | 2016-03-18 06:30:00 | 2016-02-26 06:30:00 
12 | 29 | god | india  |  1  |  2  | 2016-03-18 06:30:00 | 2016-03-18 06:30:00 
13 | 29 | pen | india  |  44  |  2  | 2016-03-18 06:30:00 | 2016-03-25 06:30:00 


team_feed_activites 

    id | team_id | operation  | created_at  |   updated_at 

    1 | 10 | established | 2016-03-18 06:30:00 | 2016-03-18 06:30:00 
    2 | 23 | established | 2016-03-19 06:30:00 | 2016-03-19 06:30:00 
    3 | 23 | modified  | 2016-03-19 06:30:00 | 2016-03-19 06:30:00 
    4 | 24 | captian changed | 2016-03-19 06:30:00 | 2016-03-19 06:30:00 
    5 | 23 | captian added | 2016-03-19 06:30:00 | 2016-03-19 06:30:00 
    6 | 27 |  won  | 2016-03-19 06:30:00 | 2016-03-19 06:30:00 
    7 | 23 |  won  | 2016-03-19 06:30:00 | 2016-03-19 06:30:00 
    8 | 23 | paricipated | 2016-03-19 06:30:00 | 2016-03-19 06:30:00 
    9 | 23 |  lost  | 2016-03-19 06:30:00 | 2016-03-19 06:30:00 
    10 | 23 | changed pic | 2016-03-19 06:30:00 | 2016-03-19 06:30:00 
    11 | 23 | addded image | 2016-03-19 06:30:00 | 2016-03-19 06:30:00 
    12 | 30 | established | 2016-03-19 06:30:00 | 2016-03-19 06:30:00 

Nun, was ich brauche, eine Ansicht zu erstellen ist, wo diese Tabelle in der Tabelle basierend auf updated_at Zeitpunkt zusammengeführt wird. So dass ich sehen kann, was der Team-Fortschritt Tag für Tag ist, so dass ich das als Team-Feeds nutzen kann. Kann mir jemand helfen, wie das geht .. !!! Danke im Voraus ..!!!

+0

Was ist die Granularität Ihres Vergleichs? ein Tag ? eine Stunde ? Wenn es ein Tag ist, sollten Sie DATE (updated_at) in der WHERE-Klausel verwenden und eine GROUP BY-Klausel irgendwo – quazardous

+0

jede Sekunde verwenden, da Aktivitäten oder Beiträge jede Sekunde erledigt werden ... –

+0

Was Sie wollen, heißt à full Outer Join: Sie wollen alle Linien von jeft und rechtem Tisch. http://stackoverflow.com/questions/4796872/full-outer-join-in-mysql – quazardous

Antwort

0

Ich versuchte den untenstehenden Code und ich bekam den Ausgang, wie ich akzeptierte.

In obiger Abfrage habe ich einzigartige Spalte als event_updated_at basierend auf der Tabellenauswahl gemacht und dies als Sicht gemacht. Und um Daten davon zu erhalten, habe ich unten Abfrage verwendet.

select post_id, 
    post_team_id, 
    text, 
    location_name, 
    stars_count, 
    comments_count, 
    team_feed_activites_id, 
    team_feed_activites_team_id, 
    team_feed_activites_operation 
from team_feeds 
order by event_updated_at ASC 
0

Verwenden Sie einfach einfache INNER JOIN Daten aus zwei Tabellen

SELECT * FROM team_posts tp 
    INNER JOIN team_feed_activites tfa ON tp.updated_at = tfa.updated_at; 
+0

tp.updated_at = tfa.updated_at Wenn ich zwei Tischdaten habe, dann werde ich keine anderen Aktivitäten des Teams bekommen, ich werde es sein Ich bekomme die Aktivitäten oder Beiträge des Teams nur, wenn zwei Tischdaten gleich sind. –

+0

Ich respektiere deine Antwort Sir, aber ich denke, das wird nur Daten zusammenführen, die eine 'updated_at' haben und die anderen überspringt. – rmondesilva

+0

@rmondesilva ja du hast Recht. –

0
basierend auf updated_at Feld kombinieren

Sie diese Abfrage SELECT tp.field,tfa.field FROM team_posts tp,team_feed_activites tfa

aber verwenden sorgfältig diese doppelte einige Zeit aufzeichnet und neuen Namen zuweisen geben können für jedes Feld, weil es denselben Namen in Feld gibt, so wird es es ersetzen

Feldname zuweisen: tp.id as tp_id

+0

wir werden dupilcate records ich habe das schon versucht ... –

+0

, denn wenn Sie keinen Kommentar hinzufügen, gibt es doppelte Datensätze. Bitte geben Sie mir gemeinsames Feld aus beiden Tabellen, so kann ich Ihnen neue Abfrage geben, die funktioniert 100% – kuna88

+0

wir haben keine gemeinsame Spalte incase, wenn wir gleiche Spalte hätte dann hätte ich diese Frage überhaupt nicht gestellt .. –

0

Verbinden Sie sich mit LEFT JOIN und RIGHT JOIN dann verbinden Sie sie mit UNION ALL Sie können dies versuchen.

SELECT * 
FROM 
(SELECT a.* FROM team_posts a 
     LEFT JOIN 
     team_feed_activities b 
     ON a.updated_at=b.updated_at 
UNION ALL 
SELECT a.* FROM team_posts a 
     RIGHT JOIN 
     team_feed_activities b 
     ON a.updated_at=b.updated_at) subquery 
ORDER BY updated_at DESC 

HINWEIS: Die beiden (Unterabfragen) SELECT Spalten müssen die gleiche Anzahl von Spalten haben. Beispiel:

SELECT a.*, b.operation

auf Zweitens muss es die gleichen sein

SELECT a.*, b.operation oder SELECT a.*, b.team_id

solange beide Tabellen gleiche Anzahl von Spalten angezeigt werden.

+0

Es fusioniert die Tabelle, aber bekomme nicht die Sortierung basierend auf Update bei. Stattdessen bekomme ich die update_at Spalte zweimal eins aus der Team Posts Tabelle und andere aus team_feed_activites –

+0

@ManiKandan Ich aktualisierte meine Antwort. Bitte schau es dir an. – rmondesilva

+0

Ich bekomme den Fehler "Jede abgeleitete Tabelle muss ihren eigenen Alias ​​haben". Ich schätze, dieser Fehler tritt auf, da wir in der Reihenfolge ny updated_at keinen Alias ​​angegeben haben. –

Verwandte Themen