---
title: "Extbase SQL Join"
url: "https://www.typo3.net/d/119464-extbase-sql-join"
source: "typo3.net"
tags: ["Extensions","Extbase","Datenbank","Frage"]
created: "2015-01-11"
last_reply: "2015-01-19"
replies: 2
solved: true
page: 1
pages: 1
lang: "de"
---

# Extbase SQL Join

Extensions › Extbase · 2 Antworten · gelöst · gestartet 2015-01-11

## Frage

**Halion** · 2015-01-11 · [Beitrag #1](https://www.typo3.net/d/119464-extbase-sql-join/1)

Hallo Typo3 Community,

ich baue gerade eine Extbase Extension, in welcher ich in meiner Haupttabelle eine Relation zu einer Tabelle namens "zipcode" nutze, dort gibt es einen Start und einen End Wert um einen PLZ Bereich zu definieren. Ein Datensatz kann nun mehrere Zipcode Relationen besitzen.

Nun würde ich gerne eine PLZ Suche bauen wo man seine PLZ eingeben kann und geprüft werden soll welche der zipcode Relationen darin liegen.

Muss ich hier einen JOIN Statement bauen? Wenn ja, Wie müsste der aussehen?
Oder gibt es eine andere Möglichkeit?

Vielen Dank für Eure Hilfe
Halion

## Beste Antwort

**Halion** · 2015-01-19 · [Beitrag #3](https://www.typo3.net/d/119464-extbase-sql-join/3)

Danke für deine Antwort.

Ich habe mir an der Stelle eine Funktion im Repository erstellt welche mir ein/mehrere Objekt(e) anhand eines Querys zurück gibt.

Vielleicht hilt es ja anderen:

```php
public function deliverFromZiprange($zip) {

		//$party = intval($zip);

		$query = $this->createQuery();

		$query->getQuerySettings()->setRespectStoragePage(false);

		return $query->statement("
			SELECT tx_entities_domain_model_party.*
			FROM tx_entities_domain_model_party
			LEFT JOIN tx_entities_domain_model_zipcoderange
			ON tx_entities_domain_model_party.uid = tx_entities_domain_model_zipcoderange.party
			WHERE tx_entities_domain_model_zipcoderange.zipcode_start <= {$zip}
			AND tx_entities_domain_model_zipcoderange.zipcode_end >= {$zip}
		")
			->execute();
```

Funktioniert tadellos!

Der Aufbau eines Joins folgt diesem Aufbau:

```php
SELECT DISTINCT oberobjekt.*

    FROM oberobjekt

    LEFT JOIN unterobjekt ON oberobjekt.uid=unterobjekt.oberobjekt

    WHERE (oberobjekt.title LIKE '%test%' OR unterobjekt.title LIKE '%test%')

    AND oberobjekt.deleted=0 AND (...)

    AND unterobjekt.deleted=0 AND (...)
```

Viel Spass!

## Antworten

### [#2](https://www.typo3.net/d/119464-extbase-sql-join/2) · toifel · 2015-01-12

Wenn dein Model deinen Anforderungen entsprechend konfiguriert ist, dann sollte die Relation bereits vom Repository berücksichtigt werden.
Falls die "zipcode" Tabelle aber gar nicht als Model existiert hast du bereits die 2 wichtigsten Stichworte zu der Lösung genannt: JOIN und STATEMENT.

Mit $query->statement() kannst du manuelle Queries erstellen und bist nicht mehr an das Extbase Model und die Repository-Funktionen gebunden.

```php
SELECT user.* FROM usertable LEFT JOIN zipcode ON (user.X = zipcode.Y) WHERE...
```

### [#3](https://www.typo3.net/d/119464-extbase-sql-join/3) · Halion · 2015-01-19 · Beste Antwort

(Text siehe oben unter „Beste Antwort“.)

---

Quelle: „Extbase SQL Join“, typo3.net, https://www.typo3.net/d/119464-extbase-sql-join
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
