2016-10-07 6 views
1

Ich habe 3 Tabellen:MySQL Select IF INNER JOIN

place (placeId,placeName,...) 
event (eventId, eventName,...) 
picture (pictureId,associateId,picturePath,type [1 place 2 event]) 

Dies ist, was ich will:

Bei einem Bildtyp 1 picture.associateId = place.placeId Rückpfad

wenn Bild Typ 2 picture.associateId = event.eventId Rückpfad

1 Platz -> viele Veranstaltungen

1 Platz -> ein Bild

1 Ereignis -> ein Bild

so etwas wie dieses sein kann (bitte helfen):

SELECT Place.placeName, Picture.picturePath, Event.eventId, ... FROM Place INNER JOIN Event ON Place.placeId = Event.eventPlace INNER JOIN Picture ON (IF Picture.type=1 return Picture.picturePath ELSE Picture.type=2 return Picture.picturePath) 

auf einer Seite Diese konsultieren Sie mir eine Json zurückgeben Ereignisse zeigen deppending des Datum:

SELECT Place.placeName, Place.placePopularity, Picture.picturePath, Event.eventId, Event.eventCount 
FROM Place INNER JOIN Picture ON Place.placeId = Picture.associateId 
    INNER JOIN Event ON Place.placeId = Event.eventPlace 
WHERE Picture.type = 2 AND Event.eventDate = '$date' 
ORDER BY Event.eventCount DESC 
+1

fügen Sie Ihre Tabellen mit SHOW CREATE TABLE bitte – e4c5

+0

1 Platz kann viele Ereignisse haben, 1 Platz/Ereignis kann nur 1 Bild haben –

+0

Bitte geben Sie einige Beispieldaten für alle drei Tabellen. Bitte zeigen Sie uns auch, was Sie erwarten würden, dass die Ausgabe Ihrer SQL wäre, wenn Sie es mit diesen Beispieldaten ausführen würden. – MJH

Antwort

0

ein if else Führen Sie mit diesem

if() { // picture type 1 
     // this is the query 
     $query = "SELECT pictureTable.picture_path FROM placeTable INNER JOIN picture_table ON placeTable.placeId = picture_table.associateId"; 
     } else { // picture type 2 means for event 

     $query = "SELECT pictureTable.picture_path FROM eventTable INNER JOIN picture_table ON eventTable.eventId = picture_table.associateId"; 
     // now you can get the result 
     } 

Hoffe das hilft.