2011-01-04 5 views
2

Ich bin eine Datenbank abfragen, um alle Namen der Arbeitgeber aus meiner Datenbank zu bekommen, aber ich will nur diejenigen, wo ihre ID ist in meinem Job-Tabelle, hier ist, was ich versuche machen.coderigniter active record oder allgemeine mysql help

$this->db->select('*') 
    ->from('employers') 
->join('jobwall', 'jobwall.employers_employer_id = employers.employer_id', 'left'); 

Dies gilt jedoch nicht die richtigen Ergebnisse zurück, wie kann ich wählen Sie alle meine Arbeitgeber aus der Tabelle Arbeitgeber aber nur, wenn sie Daten in der Jobwall-Tabelle?

+0

was bekommt man als Ergebnis? Hast du irgendwelche Fehler? – helle

Antwort

0

Sie benötigen eine WHERE-Klausel hinzuzufügen:

$sql = ' 
    SELECT * 
    FROM employers 
    LEFT JOIN jobwall ON jobwall.employers_employer_id = employers.employer_id 
    WHERE employers.employer_id 
    IN (SELECT employers_employer_id FROM jobwall) 
'; 

$this->db->query($sql); 

Ich bin nicht sicher, wie kompliziert das wäre zu erstellen Codeigniter der Active-Klasse.

+0

Dies funktioniert nicht der zweite Dienst wird eine Zeichenfolge übergeben, ich muss es als "Arbeitgeber" übergeben. Employers_id'' es wird derzeit als 'employer_id' Arbeitgeber übergeben, so dass es nach IDs sucht, die das übereinstimmen string nicht den Wert der Zeile –

+0

Sorry, ich missverstanden. Eine Sekunde ... –

+0

Danke Ich freue mich darauf, endlich eine Antwort dafür zu haben, die mich seit Stunden nervt –

0

denke ich, eine bessere WHERE-Klausel sein könnte:

SELECT * 
FROM employers 
LEFT JOIN jobwall ON jobwall.employers_employer_id = employers.employer_id 
WHERE jobwall.id IS NOT NULL 

Diese alle Zeilen ausschließen, die keinen entsprechenden Job haben.

Sie sollten den Primärschlüssel verwenden, den Ihre jobwall Tabelle hat, wenn jobwall.id nicht existiert.

Dies kann auch leicht mit ActiveRecord geschrieben werden.

0

ich Ihnen nicht genau verstehen, aber ich glaube, Sie join ohne left verwenden sollten:

this->db->select('*')->from('employers')->join('jobwall', 'jobwall.employers_employer_id = employers.employer_id');